pyhton2与python3的使用区别
程序员文章站
2022-07-02 12:59:14
刚刚开始学习python这门编程语言,考虑到python不同版本的一些用法不同,收集整理了一份python2与python3之间的区别,目前可能不全 编码(核心类) Python2默认编码ascii,Python3默认编码UTF 8,因此使用Python3不需要文件顶部写‘ coding=utf 8 ......
刚刚开始学习python这门编程语言,考虑到python不同版本的一些用法不同,收集整理了一份python2与python3之间的区别,目前可能不全
编码(核心类)
python2默认编码ascii,python3默认编码utf-8,因此使用python3不需要文件顶部写‘# coding=utf-8’。 py2: - ascii 文件头可以修改:#-*- encoding:utf-8 -*- py3: - utf-8 文件头可以修改:#-*- encoding:utf-8 -*-
字符串类型(核心类)
python2中字符串有两种类型:unicode和str,前者表示文本字符串,后者表示字节序列,两者没有明显的界限。 python3中也有两种类型,str表示字符串,byte表示字节序列,任何需要写入文本或者网络传输的数据都只接收字节序列。 字符串: py2: unicode v = u"root" 本质上用unicode存储(万国码) (str/bytes) v = "root" 本质用字节存储 py3: str v = "root" 本质上用unicode存储(万国码) bytes v = b"root" 本质上用字节存储
缩进格式(核心类)
python2的缩进机制中,1个tab和8个space等价的,同时允许缩进中tab和space在代码*存,但这种机制在部分ide使用中有问题。python3中tab和space不再能共存,同时存在时会报错: taberror: inconsistent use of tabs and spaces in indentation.
print,exec的用法
在python2中,print作为语句使用,而在python3中作为函数使用,exec同理: print(“hello”,“world”) 在python2中则输出为一个元组; 在pyton3中输出为两个字符串,默认中间用空格隔开。
true和false用法
python2中true和false都是全局变量,数值分别表示为1和0,因为是变量,所以存在可以被赋值的情况。 python3中true和false是关键字,固定指向两个固定对象,不再允许被重新赋值。
小数和除法的用法
python2中/作用就是整除,只输出整数,//是小数除法; 而在python3中用//作为整除,/是小数除法。 实例:3/2在python2中输出为1,在python3中是1.5
比较运算符的区别
python2中任意两对象都可以比较。 python3中只有同种数据类型对象可以比较。
nonlocal
在python2中可以在函数中使用global声明变量为全局变量,但是给一个变量声明为非局部变量是无法实现的。在python3,新增了关键字nonlocal,使得定义非jubu变量成为了可能。
迭代器
python2中很多返回列表对象的内置函数和方法。 在python3中都改成了返回类似于迭代器的对象,迭代器的惰性求值特性使得操作大数据更加有效率。
for循环变量值区别*
python2中,for循环会修改外部相同名称变量的值: i = 1 print ('comprehension: ', [i for i in range(5)]) print ('after: i =', i ) #i=4 类似于python3中: i=1 for i in range(5): print(i) print(i) ##两次结果都是4 python3,for循环不会修改外部相同名称变量的值: i = 1 print ('comprehension: ', [i for i in range(5)]) print ('after: i =', i ) #i=1 [i for i in range(5)]生成的是一个链表
round函数返回值区别
python2,round函数返回int类型值 isinstance(round(15.5),int) #true python3,round函数返回float类型值 isinstance(round(15.5),float) #true
上一篇: Linux安装Kafka
下一篇: meta标签的设置和应用