版权声明:本文为博主原创文章,遵循 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)
参考链接: