Python2到Python3的迁移与兼容

目录

python2 和 python3 的差异与兼容一览表

python2 和 python3 的差异与兼容详解

1. 整型

2. 字符串

3. 比较

3.1 “不等于”运算符

3.2 __comp__()

3.3 非法比较

4. 算数运算符

5. round()

6. 输入函数

7. 输出函数

8. 文件操作函数

9. exec, execfile()

10. xrange(), range()

11. 字典

11.1 has_key()

11.2 遍历方式

12. zip()

13. map()

14. filter()

15. 迭代器 next

16. 缩进方法

17. 异常处理

17.1 异常触发

17.2 异常处理

18. object

19. 模块导入方式

20. 列表推导式


python2 和 python3 的差异与兼容一览表

python2 和 python3 的差异与兼容一览表
python 2 python 3 python 2 & python 3

long,int  
 

int  
 

six.integer_types  
 

basestring 

str  

six.string_type 

unicode  
 

str  
 

six.text_type  
 

str  
 

bytes  
 

six.binary_type 
 

 
 

 
 

 
 

<>, !=  

!=  

!=  

__comp__() 

__eq__, __ne__, __lt__, __le__, __gt__, __ge__ 

3 / 2 = 1 

3 // 2 = 1 , 3 / 2 = 1.5  

 
 

round(16.5) =17, round(17.5) = 18 

round(16.5) =16, round(17.5) = 18 

raw_input(), input() 

input() 

input() 

10 

print  
 

print()  
 

if six.PY3 … else ...  
 

11 

file(), open()  
 

open()  
 

open()  
 

12 

exec  
 

exec()  
 

if six.PY3 … else ...  
 

13 

execfile('filename')  
 

exec(compile(open('filename').read(),'filename','exec'))  
 

if six.PY3 … else ...  
 

14 

xrange()  ,

range() 不需要生成list对象时 

range()  
 

six.moves.xrange()  
 

15 

range():需要生成 list 时  
 

list(range()) 
 

list(six.moves.xrange)  
 

16 

has_key() 
 

in 
 

in 
 

17 

dict.iteritems() ,

dict.items() 只读时 

dict.items() 

six.iteritems(dict) 

dict.items() 需要修改时 

list(dict.items()) 

list(six.iteritems(dict)) 

18 

dict.iterkeys() ,

dict.keys() 只读时 

dict.keys() 

six.iterkeys(dict) 

dict.keys() 需要修改时 

list(dict.keys()) 

list(six.iterkeys()) 

for key in dict.iterkeys(): 

for key in dict: 
 

for key in dict: 
 

19 

dict.itervalues() ,

dict.values() 只读时 

dict.values() 

six.itervalues(dict) 

dict.values() 需要修改时 

list(dict.values()) 

list(six.itervalues(dict) 

21 

itertools.izip()  ,

zip() 只读时 

zip() 

six.moves.zip() 

zip() 需要修改时 ,

list(zip()) 

list(six.moves.zip() 

22 

itertools.imap()  ,

map() 只读时 

map() 

six.moves.map() 

map() 需要修改时 

list(map()) 

list(six.moves.map()) 

23 

Itertools.ifilter() ,

filter() 只读时 

filter() 

six.moves.filter() 

filter() 需要修改时 

list(filter()) 

list(six.moves.filter()) 

24 迭代器 next() 函数和 .next() 方法 迭代器 next() 函数 迭代器 next() 函数
25

raise IOError, "file error"
raise IOError("file error")

raise IOError("file error") raise IOError("file error")
26

try: ...except NameError, err:
try: ...except NameError as err:

try: ...except NameError as err: try: ...except NameError as err:

python2 和 python3 的差异与兼容详解

py3 的更改:py3 的新功能

要做到兼容 py2 和 py3,我们需要了解两个模块。

  • __future__ ,py3 引入了一些与 py2 不兼容的关键字和功能,这些关键字和功能可以通过 py2 中的内置 __future__ 模块导入。

feature

optional in

mandatory in

effect

nest

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值