标准库的重组织
-移除了"愚蠢的老东西"
-模块重命名,遵循PEP-8(Python Enhancement Proposals,Style Guide for Python Code)
-工具2to3可以帮你完成大部分移植工作
Python2中糟糕的名字,违反了PEP 8
Python2 | Python3 |
---|---|
import _winreg | import winreg |
Python3中自动使用优化的实现
Python2 | Python3 |
---|---|
try:
| import io
import pickle
|
Python2 | Python3 |
---|---|
import HTMLParser
| import html.parser
|
-移除了一些模块:compiler,popen2 htmllib, sgmllib, urllib,md5等等
-工具2to3不处理这些
-重写你的代码,避免使用弃用的模块
-从PEP 3108查看所有的替换
附注:pickle数据需要重新产生(即两个版本产生的格式不一样)
iterators和views
-许多API不再返回列表,而是返回一个iterator或view
-例如dict.keys(),.values()和.items()返回views。
-view是一个类似集合的对象,可以进行标准的集合操作,如加和减
map(),filter(),zip()返回iterators。
Python2 | Python3 |
---|---|
a = map(lambda x: x[1], items)
| a = [x[1] for x in items]
no change
no change
|
-xrange()是新的range().
-大部分代码不需要修改
特殊方法:slicing
-__getslice__和friends不再支持
-使用__getitem__来替代
特殊方法:丰富的比较
取消了3路比较
Python2
Python3
语法改变:异常
Python2 | Python3 |
---|---|
try: | try: |
语法改变:相关引入
json/
|- encoder.py
|- decoder.py
|- __init__.py
在文件__init__.py中:
语法改变:set和dict理解
-新集合语法
-集合理解
-辞典理解
语法改变:其他细微差别
-扩展可迭代拆包
-nonlocal声明用于访问外部变量
-函数注解
(未完待续)