Python 3 学习

之前一直都是用的 Python 2,不过随着 Python 3 越来越成熟,最近决定在新项目中全面使用 Python 3。

这里总结一下 Python 2 和 Python 3 之间的主要区别。

输入

Python 2

a = input('enter a number: ') # 输入 123  
type(a) # <type 'int'>

b = raw_input('enter a number: ') # 输入 123  
type(b) # <type 'str'>  

Python 3

a = input('enter a number: ') # 输入 123  
type(a) # <type 'str'>

b = eval(input('enter a number: ')) # 输入 123  
type(b) # <type 'int'>  

注:

Python 2 的 raw_input() 等价于 Python 3 中的 input()

Python 2 的 input() 等价于 Python 3 中的 eval(input())

输出

Python 2

print 'Python', python_version()  
print 'Hello, World!'  
print('Hello, World!') # Python 2.7+  

Python 3

print('Python', python_version())  
print('Hello, World!')  

整除

Python 2

print '3 / 2 =', 3 / 2  # 1  
print '3 // 2 =', 3 // 2  # 1.5  
print '3 / 2.0 =', 3 / 2.0  # 1.5  
print '3 // 2.0 =', 3 // 2.0  # 1.0  

Python 3

print '3 / 2 =', 3 / 2  # 1.5  
print '3 // 2 =', 3 // 2  # 1  
print '3 / 2.0 =', 3 / 2.0  # 1.5  
print '3 // 2.0 =', 3 // 2.0  # 1.0  

Unicode

Python 2

s = '你好啊'  
type (s) # <type 'str'>

s = u'你好啊'  
type (s) # <type 'unicode'>  

Python 3

s = '你好啊'  
type (s) # <type 'str'>

s = u'你好啊'  
type (s) # <type 'str'>  

Range

Python 2

n = 100  
for i in range(n):  
    pass

type(range(n)) # <type 'list'>

for i in xrange(n):  
    pass   

type(xrange(n)) # <type 'xrange'>  

Python 3

n = 100  
for i in range(n):  
    pass

type(range(n)) # <class 'range'>  
# 如果需要转成 list,则使用
list(range(n))  

注: Python 3 中没有 xrange(n) 方法,它的 range(n) 在功能上与 Python 2 中的 xrange(n) 相同。

异常

Python 2

raise IOError, "some error"  

Python 3

raise IOError("some error")  

Python 2

try:  
    # some actions
except IOError, err:  
    # do sth 

Python 3

try:  
    # some actions
except IOError as err:  
    # do sth

Next

Python 2

g = (i for i in xrange(5))  
next(g) # Python 2.7+  
g.next()  

Python 3

g = (i for i in range(5))  
next(g)  

舍入规则

Python 2

# 四舍五入
round(1.5) # 2  
round(2.5) # 3  

Python 3

# 四舍六入五留双
# 舍入位之后的尾数逢五的话看前一位,奇进偶不进
round(1.5) # 2  
round(2.5) # 2  

参考资料: The key differences between Python 2.7.x and Python 3.x with examples

Show Comments