python2与python3 版本区别
编码
- python2默认编码器为ascii码(只支持字母和符号)python3默认编码器为utf-8(所有语言都支持)
输入输出
- python2 name = raw_input("请输入姓名") python3 name =input("请输入姓名")
- 在python2 print "gkf" python3 print("gkf") python2.7版本两种写法都支持
中文
- python2 coding:utf-8(文件头加,支持中文)
- 如: # -- coding:utf-8 --
除法
- py2除法除尽 from_future_ import division 需导入模块
- py3默认地板除(除尽)
- py2只取整数部分,小数不保留
长整形
- py2 有长整型后跟L表示 py3中没有长整形(long)自动转化
内置函数map
- 内置函数map 结果py3不展示 py2直接展示
- y2:返回列表
- py3:返回迭代器,可以循环但不可以索引
xrange
- py2 xrange(不会立即生成,而是遍循环遍创建)/range(在内存中把所有的值立即生成) py3 range 要想实现xrange list(range(数字))
init
- 对于包的定义:
- py2:文件见中必须有 _ _init _ _.py 。
- py3:不需要 _ init _.py .
reduce
- reduce() 函数在 python 2 是内置函数, 从python 3 开始移到了 functools 模块。
字符串类型
- 字符串类型不同
- py3: str bytes
- py2: unicode str
dict字典
- 字典
- keys
- py2:列表
- py3:迭代器,可以循环但不可以索引
- values
- py2:列表
- py3:迭代器,可以循环但不可以索引
- items
- py2:列表
- py3:迭代器,可以循环但不可以索引
- keys
经典类 新式类
-
面向对象多继承查找
- Py2经典类: 深度优先
- 新式类: 广度优先
-
面向对象新式类和经典类
经典类:
- Py2:没有super()方法
- 没有mro()方法:类的查找顺序
- 深度优先
新式类:
- super按照mro的查找顺序,查找自己的下一个类
未完待补充
欢迎补充~