python2.7过渡到python3.6时遇到的差别总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接和本声明。
本文连接:http://www.javashuo.com/article/p-rorualgl-s.htmlhtml

 

*** python2.7版本只支持到2020年1月1日 ,建议新学习者安装python3版本。python

 

 1.2.1 终端输入区别

 

Python2.7:

(1)input() 能够自动判断其类型,即输入什么类型的数据,就是什么类型,没有引号的英文字符会被判断为变量,会在全文中找对应的变量。若是str类型必须加单引号或者双引号,否则类型不对,报错;

(2)raw_input() 输入全部数据都按照str类型处理,若是是整形输入,使用时要str转int,用(int)强制转换;

Python3.6:python2.7


python3将raw_input和input进行了整合,只有input,输入的为str函数


(1)input() 输入全部数据都按照str类型处理,若是是整形输入,使用时要str转int,用(int)强制转换;

(2)raw_input() 再也不使用; post

 

1.2.2 print区别

 

Python2.7:print 为class ,后面直接跟打印数值;

Python3.6:print() 为函数,打印数值必须用括号括起来;学习

 

1.2.3 编码区别

 

Python2.7:默认ASCII处理字符(字符串以8-bit存储),所以使用汉字前加# -*- coding:utf-8 -*- ;

Python3.6:所有用的是Unicode(万国码、统一码固定2字节,字符串以16-bit 存储)字符集,utf-8(可动态变化1-6字节,en:1byte  zh:3bytes) 是对Unicode的压缩和优化,所以支持中文;优化


 1.2.4 字符串编码区别

 

Python2.7:在Python2中,做为两种类型的字符序列,str与unicode须要转换,它们是这样转换的.
str——decode方法——》unicode——encode方法——》str   u'string'        ui

 

Python3.6:在python3中能够这样对应这转换,配合上面的图,也许会好理解一点。
byte——decode(解码)方法——》str——>encode(编码)方法——》byte   b'string'   
编码

 

 1.2.5 真除、整除区别

 

Python2.7:带上小数点/表示真除,%表示取余,//表示地板除(结果取整);url


Python3.6:/表示真除,%表示取余,//表示地板除(结果取整);
 

 1.2.6 range、xrange区别

 

Python2.7:range()生成一个列表,xrange()生成一个生成器;


Python3.6:list( range(0,4) )列表,range()生成一个生成器,xrange()再也不使用;

python3中没有了xrange,python3的range就是xrange,也就是说range()返回的再也不是一个列表而是一个class,若是要获得列表须要list(),for i in range(3)照样能够这样使用

 

 1.2.7 字典类方法区别

 

Python3.6:字典的items()和keys()返回的再也不是一个列表而是一个class,须要用list()转换为list;

python3中字典类方法has_key()也再也不支持,用运算符处理,eg:'abc' in dic

 1.2.8 打开文件区别

 

Python2.7:file()、open()均可打开文件;


Python3.6:file()再也不使用,只用open()打开文件;

 

 1.2.9 八进制标识区别

 

Python2.7:八进制以数字0开头,例如oct(64)0100

Python3.6:八进制:以数字0开头,第二位用字母o,后面跟上你的八进制数,例如oct(64)0o100

  • 之前确实是用 \o ,但新版本为了防止字母 o 与数字 0 之间产生混淆,舍弃了字母 o 这个前缀
  • 这就解释了为何 \x 还在用,而 \o 改成 \

在python2.7中可使用os.chmod("/tmp/foo.txt", 777),但切换到python3.6中这样使用会报错,正确的使用应该是os.chmod("/tmp/foo.txt", 0o1411)

 

参考连接:

python2.7和python3.6经常使用区别 

python2.7过渡到python3.6时遇到的差别总结  

[Python3 填坑] 004 关于八进制  

相关文章
相关标签/搜索