1、Python3 使用 print 必须要以小括号包裹打印内容,比如 print('hi')
Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi'
2、Python2 range(1,10)返回列表,Python3中返回迭代器,节约内存
3、Python2 中使用ascii编码,Python3中使用utf-8编码
4、Python2 中unicode表示字符串序列,str表示字节序列
Python3 中str表示字符串序列,byte表示字节序列
5、Python2 中为正常显示中文,引入coding声明,Python3中不需要
6、Python2 中是raw_input()函数,Python3中是input()函数
7、Python2 导入同级目录下的模块无需 . Python3导入同级目录下的模块需要加上 .
python2 | python3 |
1. 编码方面 | |
ASCII编码 -- str类型 Unicode编码 -- Unicode类型 | Unicode编码 -- str类型 非Unicode编码 -- 字节类型: bytes & bytearrays |
python2创建的字符串根据操作系统而定, Linux下为 utf-8, 简体中文Windows下为 GBK, ipython2默认为 utf-8 | python3&ipython3创建的字符串为: Unicode编码 -- str类型 的字符串, 源码文件默认为utf-8 |
2. 语法方面 | |
除法运算 / , 整数运算时会把小数部分完全忽略掉, 浮点数运算时会保留一位小数. | 进行整数运算时, 结果仍为浮点数 |
xrange 返回一个生成器, 需生成较大的数字序列时, xrange性能更优. | range 生成一个list对象 |
zip()函数返回列表 | zip()函数返回迭代器 |
不等运算符包括: != 和 <> | 仅包含 != |
反引号 `` & repr函数 | 仅允许使用 repr函数 |
exec 语句 | exec() 函数 |
print 语句 | print() 函数 |
a. 异常捕获的语法 : except exc, var b. 所有异常类型的对象都是可以被直接抛出的 c. raise语句使用了逗号 将抛出对象类型和参数分开 |
a. 使用 as 作为关键字 : except exc as var b. 只有继承自 BaseException 的对象才可以被抛出 c. 不再使用此种写法 |
添加关键字 : as with True False None , 添加 nonlocal语句 引入抽象基类(Abstraact Base Classes, ABCs) 容器类和迭代类被ABCs化, cellections 模块新增多个类型 |
|
3. 模块改名 | |
_winreg | winreg |
ConfigParser | configparser |
Queue | queue |
copy_reg | copyreg |
SocketServer | socketserver |
repr | reprlib |
new, md5, gopherlib等模块被删除 | |
4. 数据类型 | |
存在 long类型, 不存在 bytes类型 | 去除 long类型, 新增 bytes类型 |
存在 iterkeys()等函数 | dict的.keys()、.items 和.values()方法返回迭代器, 去除 dict.has_key() , 使用 in代替 |
5. 输入输出 | |
raw_input("提示信息") 得到是 str类型 , input("提示信息") 得到是 int类型 | input("提示信息") 统一得到是 str类型 |
file( ... ) open( ... ) 打开文件 | 仅能使用 open( ... ) 或加上with |
map()内置函数 & filter()内置函数 : <built-in function filter>, 返回列表 | map类 & filter类 : <filter object at 0x10d8bd3c8>, 返回可迭代对象 |