Python 进阶 (七) 浅谈 python3 和 Python2 的区别
一、前言
不管使用何种版本的Python
语言,都需要遵循编程规范,不该有的缩进一定不能有。否则会出现莫名其妙的错误,如下图所示:
在应用Python
编程时,首先要明确所使用Python
版本,因为版本 2 与 3 之间存在着很多细节性的差异。稍有不慎就会入坑~下面介绍一下具体应用中的细节性差异。
二、print 函数
Python3
中print
为一个函数,必须用括号括起来;Python2
中print
为class
。Python2
的 print
声明已经被 print()
函数取代了,这意味着我们必须包装我们想打印在小括号中的对象。
2.1 举例
在 Python2
中:
在 Python3 中:
三、reduce()函数
在 Python3 里,reduce()
函数已经被从全局名字空间里移除了,它现在被放置在fucntools
模块里。使用时要先引入from functools import reduce
四、try except
五、打开文件
原: file( ..... )
或 open(.....)
改为:只能用 open(.....)
六、从键盘录入一个字符串
原: raw_input( "提示信息" )
改为: input( "提示信息" )
七、整形除法自动转为 float
python2:
python3:
八、新的字符串格式化方法 format 取代 %5.
xrange
重命名为range
;!=
取代< >
;long
重命名为int
;exec
变成函数;Py3.X
源码文件默认使用utf-8
编码,这就使得以下代码是合法的:
九、python3 中替换 python2 中 cmp 函数
Python 3.4.3 的版本中已经没有 cmp 函数,被 operator 模块代替,在交互模式下使用时,需要导入模块。在没有导入模块情况下,会出现下面的错误:
提示找不到 cmp 函数了,那么在 python3 中该如何使用这个函数呢?所以要导入模块
看下面给的内置函数
这几个函数就是用来替换之前的 cmp,函数的返回值是布尔值。
十、除法
在
python3.0
中,/
现在总是执行真除法,不管操作数的类型,都会返回包含任何余数的一个浮点结果。//
执行 Floor 除法,它截除掉余数并且针对整数操作数返回一个整数,如果有任何一个操作数是浮点数类型,则返回一个浮点数。在
python2.6
中,/
表示传统除法,如果两个操作数都是整数的话,执行截断的整数除法;否则,执行浮点除法(保留余数,好像是真除法?)。//
执行 Floor 除法,并且像在python3.0
中一样工作,对于整数执行截断除法,对于浮点数执行浮点除法。
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/342c8e45d8fdf8c1cfa9a71e5】。文章转载请联系作者。
评论