一,
python2不能显示中文,需要在代码的顶行加上#-*-encoding:utf-8-*-
python3则不需要。
二 ,
python2中字符串就是字节串,在源码中:
bytes = str
;
三 ,
python3中字符串是需要用Unicode转成字节的;
文件操作中python2里面xreadlines它返回的是一个可迭代对象,可以一次只取一行数据.例如:
fh=open('aa.log','rb')
for line in fh.xreadlines():
print(line)
四,
python2中的交互用raw_input,必须且只能用它。而python3中的交互用input。
五,
python2中print不需要加(),可加可不加。而python3中的print必须加()。
六 ,
七 ,
py2:xrange. py3:range
python2在编译安装时,可以通过参数--enable-unicode=ucs2 或--enable-unicode=ucs4分别用于指定使用2个字节,
4个字节表示一个unicode字符;
python3无法进行选择,默认使用utf-8。
查看当前python中表示unicode字符串占用的空间:
import sys
print(sys。maxunicode)
如果值是65535,则表示使用ucs2标准,即:两个字节表示
如果值是1114111,则表示使用ucs4标准,即:四个字节表示
八 ,
yield from在python3开始出现:为了方便操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
在python3中才有yield from为了操作起来更简便 def func(): a = 'AB' b = 'CD' yield from a yield from b #分别返回ABCD g = func() for i in g: print(i)
九 ,
nonlocal 是在 python3中才有的,python2是没有的。
十 ,
这里的区别是在面向对象,继承里出现的
十一 ,
在连接数据库mysql的时候我们的2版本和3版本使用的模块不一样,
在3版本中我们使用的是pymysql,
在2版本中我们使用的是mysqldb,
十二 ,
关于metaclass的用法,在python2中和python3中的区别
class Foo(object): __metaclass__ = type # 在python2中我们的类要继承的类用__metaclass__写到类下面静态属性的位置, name = 'peter' def func(self, z): return z + 2
class Foo2(object, metaclass=SheType): # 在python3中我们就可以直接把它写入到括号里面去 name = 'judy' def func(self, q): return q * 2 qq=Foo2() print(qq.name)
待续~~~~~~~~~~