python2与python3区别,转python3代码
在Windows操作系统中,可以通过将Python2和Python3的可执行文件分别命名,并重命名其中一个为python.exe,从而实现两者共存。代码迁移时,需要注意多个关键差异:print语句在Python3中必须作为函数调用,加括号,并支持sep和end参数;字典的has_key方法已被移除,应使用in运算符判断键是否存在;读取文件时,必须显式指定en
目录
一、Windows中Python2和Python3共存 二、Python2和Python3的代码更改点 1. print函数不一样 2. dict没有.has_key 3. 读取文件中文字符坑一、Windows中Python2和Python3共存
最近看到提醒说Python2即将停更,于是顺手装了个Python3.7。Windows下让两者共存,最简单粗暴的办法其实还是在安装目录里动手脚——把Python2.7的python.exe改名为python2.exe,Python3.7的改成python3.exe。这样一来,想用哪个版本就在命令行里敲对应的命令,互不干扰。
二、Python2和Python3的代码更改点
1. print函数不一样
Python3已经不再支持Python2那种不加括号的print 'helloKitty', y, z写法了。必须加上括号,变成print('helloKitty', x, y)。双引号当然也没问题。
不仅如此,Python3的print()还多了不少实用功能,语法变成了:
print(value1, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
可以同时打印多个字符串,用sep参数控制它们之间的分隔符,用end参数控制末尾的字符(比如换成空字符串就能实现不换行)。回想一下,Python2里想不换行还得在语句末尾加个逗号,到了Python3下就彻底行不通了。举个例子:
>>> print('hello', 'Kitty', sep='-')
hello-Kitty
>>> print('hello', 'Kitty', sep='+', end='') # 结尾不换行
hello+Kitty
2. dict没有.has_key
Python2里判断字典是否包含某个键,习惯用if adict.has_key(key1):。到了Python3,这个方法被移除了,改写成if key1 in adict:即可,更简洁也更符合直觉。
3. 读取文件中文字符坑
Python2时代,读取文件经常在文件头加一句# _*_ coding:utf-8 _*_,然后直接with open(fileName, 'r') as f:。这套组合拳在Python3里就不灵了——必须显式指定编码:
with open(fileName, 'r', encoding='utf-8') as f:
有意思的是,这个encoding参数在Python2里又不支持。所以迁移代码时,得根据版本做条件判断,或者干脆统一用io.open之类的兼容方案。
待不断改坑补充中……
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















