2.1.1 Python3和Python2的区别
Python3默认使用的是Unicode编码,确切地说是Unicode编码中的UTF-8编码,这个编码基本可以表达绝大多数开发者使用的语言文字。Python2默认使用的是基于北美地区主要语言文字的ASCII编码,其只可以显示英文,局限性较大。
Python2和Python3使用的一些语法不同,例如,Python3使用input()函数获取键盘输入,而Python2则使用raw_input()函数。Python3和Python2的print()函数的语法也不同。示例如下:
Python2和Python3的数据类型和数据表示范围也不尽相同,Python2有5种数据类型,而Python3只有4种,省略了长整型long int(实际上是和整型int合并了,然后扩大了int所表示的范围)。str类型也有所不同,Python2中的str类型相当于Python3中的字节类型,采用UTF-8/GBK等编码格式。
正则表达式“\w”也有所区别,在Python2中,“\w”只能匹配英文,而在Python3中,其可以匹配中文。因为Python3使用的是UTF-8编码,而Python2使用的是ASCII编码。
Python2自动生成有序数字迭代器,除了range()方法还有一个xrange()方法,xrange()方法不会在内存中立即创建任何东西来占用内存空间,而是边循环边创建。而range()方法是一次性地生成所有值,并占用内存空间。在Python3中只有range()方法,它和Python2中的xrange()方法的原理是一致的。
Python3和Python2还有一个区别:是否一定要有__init__.py文件。__init__.py文件的作用是使其他程序可以导入这个文件作为包(Package)。在目标文件夹中包含一个__init__.py文件,Python就会把文件夹当作一个包,里面的.py文件就能在外面被导入(Import)了。在Python2中,必须有__init__.py文件,而在Python3中没有这个限制。