本帖最后由 小刀葛小伦 于 2019-5-30 16:10 编辑
1.Python3没有向下兼容
2.Python2.6与2.7是过度版本,使用Python2的语法和库,允许部分Py3的语法和函数
编码:
Py2:有两种字符串类型,Unicode和非Unicode字符串,源码默认"ASCII",
但字符编码在不同环境不一样,Linux是UTF-8,Windows 是GBK
Py3:只有Unicode字符串,源码文件默认"utf-8"
注意:编码可以应用encode()编码,decode()解码,Unicode是中间码,来进行各个编码的转换
语法:
1.去除了<>,改用!=
2.去除"",改用repr() 【repr()作用:用户转换任意字符为str类型】
3.关键字加入as和with,以及True,False,None
4.整形除法返回浮点数,要得到整形结果使用 // ,但是在 / 计算时,都存在精度丢失的问题(例如:10 / 3 || 1/0.3)
5.加入了nonlocal,使用nonclocl x 可以直接指派(非全局)变量
6.Py3去除了print语句,加入print()函数,以及exec语句,改为exce()函数
【exce用于执行存储在字符串或文件中的python语句】
7.改变了顺序操作符的行为,x < y 如果类型不匹配抛出TypeError,Py2是返回随机的boole值
8.输入函数删除 raw_input() ,用 input() 代替。
【 py3:input 获取的数据默认是 string 类型
py2:raw_input 获取的数据更加内容自动推导,不带任何装饰为 int ,加 "" 为 str ,带小数为 float 】
9.新的 super() 可以不再传递参数【super用于继承父类方法时的调用】
10.之前字典对象 has_key() 测试字典是否包含指定键,改为 in
11.py2中迭代器的 next() ,用于返回序列的下一项。py3 改为 __next__() ,并增加内置函数 next() ,用来调用 __next__()
12.异常从 BaseException 继承,去除了 StardardError
13.去除了异常类的序列行为和 .message 属性
14.捕获异常语法变化 except xx,error 更改为 excepr xx as error
15.Py3文件类中,file类被废弃
16.py2中的 xrange【生成器,调用时获取内容】更改为Py3中的 range【生成一个序列】,都是在循环时使用
数据类型:
1.py3去除了 long ,只有 int 。类似py2中的 long
2.新增 bytes 类型,str 对象和 bytes 对象可以通过 encode()【编码】和 docode()【解码】进行相互转换
总体没有写的很全,打算后续用到的时候再进行添加,至少前面的知道了解就足够了。
|
|