对于初期学习python的同学,可能会面临一些问题,如同样一行代码,明明看到别人可以运行成功,而自己却不可以,于是便有点费解啦.........其实我们有时候陷入思想的泥潭的时候,只是因为我们尚未清除上面的污垢,而上面的问题便引发了我们接下来的讨论。
- print 从内置命令变为一个函数,python2.4之前在应用时::print s,而现在我们需要以一个函数的方式去运用它::print(s),打印一个名为s的变量。
- map() , zip() , etc 等采用迭代器的定义,所以要转化为列表形式才能应用和输出,例如 list(map( ))。
- 用 -t ,--t控制缩进,如果你混用空格与制符表则会被视为错误。
- 新增了环境管理器with/as python3以后支持多个环境管理项,举个梨子,with S(), as a...
- 字符串编码变动,在python2中字符串字面量对应于8位的字符或面向于字节编码的字节字面量,而这样做的限制是无法完全支持国际字符集和unicode编码,所以为了弥补这一点,对于unicode编码采用了单独的字符串类型,在使用unicode编码时,在使用时需要在第一个引号前面加上’ u‘。在python3中默为unicode编码不必加前缀,否则会报错。在python3中将字节字面量和普通字符串作为两种不同类型。
- Python 3.0把reload内置函数移到了imp标准库模块中。它仍然像以前一样重载文件,但是,必须导入它才能使用。在Python 3.0中,运行import imp并使用imp.reload(M),或者,运行from imp import并使用reload(M)。
- 在python2中from 模块 import 套件 可以出现在任何位置,但到了python3只能出现在顶部。这一点要特别注意。
-
threadthread,Queue模块 改名_thread,queue。
cPickle,SocketServer模块 改名_pickle,socketserver
ConfigSparser模块 改名configsparser
Tkinter模块 改名tkinter
其他模块整合到了如http模块,urllib, urllib2模块等
-
在python2中编码是基于字符串的异常,而在python3是基于类的异常。
-
新增类的property机制(类特性)
-
在python2中混合类型可比较排序,在python3中非数字混合类型比较排序会报错。
-
变传统除法为真除法。在python2.7之前,这个操作对于整数会省去小数部分,对于浮点数会保持小数部分
在python 3.0版本中会变成真除法(无论任何类型都会保持小数部分)
-
在python2中type(I)区分类和类型 在python3中 不再区分(不再区分新式类与经典类,同时扩展了元类)。
-
在python3中未绑定方法 都是函数
-
其外增加Keyword-One参数,增加Ellipse对象,简化了super()方法语法。
-
在python2.x可以这样写class MyException: 但在python3.x版本中我们要这样写 class MyException(Exception):,否则会出现报错的情况。