编码方式
编码
python2的默认编码是ascii,所以会导致经常会遇到编码问题文件中经常会写# coding=utf-8
python3默认采用utf-8作为默认编码。
字符串
在python2中,字符串有两个类型,一个是unicode(文本字符串),一个是str(字节序列)。
在python3中,两者做了严格的区分,分别用str表示字符串,byte表示字节序列,任何需要写入文本或者网络传输的数据都只接收字节序列。
image.png内置函数
在python2中print是一条语句(作为一个整体),python3中则是一个函数(作为参数)。
示例:
# python2
print("He", "is", "a", "boy!")
>>> ('He', 'is', "a", 'boy!')
# python3
print("He", "is", "a", "boy!")
>>> He is a boy!
如果在python2中想要把print当函数使用,可以导入future模块中的print_function
from __future__ import print_function
print("He", "is", "a", "boy!")
>>> He is a boy!
数据类型
long整型被废弃,统一改写成int类型代替。不等于只有!=
,废弃<>
python2中很多返回列表对象的内置函数和方法在python3中都返回的是迭代器
,因为迭代器的惰性加载机制使得操作大数据时更有效率,有的也可以使用list
强制转换(dictionary关联的keys,values,items方法都不再返回列表,而是返回一个类似迭代器的view对象;高阶函数zip, map, filter也不再返回列表对象了)
True和False在python2中是两个全局变量,在数值上分别对应1和0,既然是变量,那么就可以被赋值。
True = False
True
>>> False
而在python3中,True和False变为两个关键字,永远指向两个固定的对象,不允许再赋值。
True = 1
>>> File "<stdin>", line 1
SyntaxError: can't assign to keyword
网友评论