【Python】Python2.x vs Python3.x

Backto Python Index

Python3 版本追踪

Release 3.8 @ 2019-10-14

What’s new? 3.8

  • 新增 海象运算法 :=, 实现 表达式内部为变量赋值, 防止同一表达式连续调用两次。适用于 第一次判断,第二次处理的场景
    if (n := len(a)) > 10:
       print(f"List is too long ({n} elements, expected <= 10)")
  • csv.DictReader 现在将返回 dict 而不是 collections.OrderedDict。 此工具现在会更快速且消耗更少内存同时仍然保留字段顺序。
  • datetime: 添加了新的替代构造器 datetime.date.fromisocalendar() 和 datetime.datetime.fromisocalendar(),它们分别基于 ISO 年份、周序号和周内日序号来构造 date 和 datetime 对象;这两者分别是其所对应类中 isocalendar 方法的逆操作。
  • os.path:返回布尔值结果的 os.path 函数例如 exists(), lexists(), isdir(), isfile(), islink(), 以及 ismount() 现在对于包含在 OS 层级无法表示的字符或字节的路径将会返回 False 而不是引发 ValueError 或其子类 UnicodeEncodeError 和 UnicodeDecodeError。

Python2 版本追踪

Release 2.7.18 @ 2020-04-24

The last release of Python2

History 历史因缘

常见不同

2.x3.x备注
print xxxprint(xxx)
xrangerange
import xxximport .xxx
3/2==13/2==1.5in 3.x, 3//2 = 1
raise ValueError, “dodgy value”raise ValueError(“dodgy value”)
except ValueError, e:except ValueError as e:
bigint = 1Lbigint = 1Short integers are gone in Python 3 and long has become int (without the trailing L in the repr
`x`repr(x)Return the canonical string representation of the object. For many object types, including most builtins, eval(repr(obj)) == obj.

porting 2.x to 3.x

绝对不是把 bug fix 之后就可以的(naive 啊),因为有很多隐性的不同,导致结果离奇出错。

  • Porting Python 2 Code to Python 3 是个系统工程,具体思路看 Brett Cannon 的 blog.。
  • 简单的代码翻译 2.x to 3.x, 使用官方工具 2to3.py, 教程

Ref

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值