Python2与Python3的区别在哪里?

越来越多的库要放弃Python 2了,我也开始转向Python 3了。最近的项目开始用Python3写了,也体会了一下2和3的区别。主要的一些区别在以下几个方面:

print函数
整数相除
Unicode
异常处理
xrange
map函数
不支持has_key

print函数
Python 2中print是语句(statement),Python 3中print则变成了函数。在Python 3中调用print需要加上括号,不加括号会报SyntaxError

Python 2

print "hello world"
输出

hello world

Python 3

print("hello world")
输出

hello world

print "hello world"
输出

File "", line 1

print "hello world"
                  ^

SyntaxError: Missing parentheses in call to 'print'

整数相除
在Python 2中,3/2的结果是整数,在Python 3中,结果则是浮点数

Python 2
Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。

为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。

许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。

为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。

新的Python程式建议使用Python 3.0版本的语法。

除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。

大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。

Python 3.0的变化主要在以下几个方面:

print 函数
print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python 2.6与Python 2.7里面,以下三种形式是等价的:

print "fish"
print ("fish") #注意print后面有个空格
print("fish") #print()不能带有任何其它参数
然而,Python 2.6实际已经支持新的print()语法:
字符编码: py3中默认字符编码是unicode;py2中默认字符编码是 ASCII,如果文件中出现了中文,需要在顶部加入coding声明HantecMarkets亨达返佣https://www.kaifx.cn/broker/h...

coding:utf8

让用户输入:py3中直接使用input(); py2中需要使用raw_input()
range和xrange:py3中的range == py2中的 xrange, 返回类似迭代器的东西,节省内存空间
语句变函数: py3中为print(), exec() 是一个方法,必须加上括号; py2中为print, exec
数据传输: py3中socket传过来的数据是byte类型 / hashlib包update也需要传bytes类型的数据; py2中则可以直接传入str, e.g

你可能感兴趣的:(python,numpy,开发语言)