版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yy-cxd/p/11793150.html

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

 1.2.1 终端输入区别

Python2.7:

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

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

Python3.6:


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


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

(2)raw_input() 不再使用; 

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'       

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

 1.2.5 真除、整除区别

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


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 关于八进制  

12-31 23:32