赞
踩
目前使用比较多的是python3(python的主流版本是python3.6之后的版本),但是有一些程序由于未改动,还是使用python2,因此我们需要简单了解一下python2与python3中存在哪些差异,以下是我在学习过程中总结的差异,希望对你有帮助!
1.输出有差异
print语句被python3废弃,统一使用print()函数
- [root@scchen1 ~]# python2
- Python 2.7.5 (default, Nov 16 2020, 22:23:17)
- [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
- Type "help", "copyright", "credits" or "license" for more information.
- >>> print "xieshan"
- xieshan
- >>> print("xieshan")
- xieshan
- >>>
- [root@scchen1 ~]# python3
- Python 3.6.8 (default, Nov 16 2020, 16:55:22)
- [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
- Type "help", "copyright", "credits" or "license" for more information.
- >>> print "xieshan"
- File "<stdin>", line 1
- print "xieshan"
- ^
- SyntaxError: Missing parentheses in call to 'print'. Did you mean print("xieshan")?
- >>> print("xieshan")
- xieshan
- >>>
2.输入有差异
raw_input函数被Python3废弃,统一使用input函数
- [root@scchen1 ~]# python2
- Python 2.7.5 (default, Nov 16 2020, 22:23:17)
- [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
- Type "help", "copyright", "credits" or "license" for more information.
- >>> suda = input("please input a word: ")
- please input a word: "a"
- >>> type(suda)
- <type 'str'>
- >>> suda = input("please input a word: ")
- please input a word: 12
- >>> type(suda)
- <type 'int'>
- >>> suda = raw_input("please input a word: ")
- please input a word: 12
- >>> type(suda)
- <type 'str'>
- [root@scchen1 ~]# python3
- Python 3.6.8 (default, Nov 16 2020, 16:55:22)
- [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
- Type "help", "copyright", "credits" or "license" for more information.
- >>> suda = input("please input a word: ")
- please input a word: a
- >>> type(suda)
- <class 'str'>
- >>> suda =raw_input("please input a word: ")
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- NameError: name 'raw_input' is not defined
- >>>
3.数据类型有差异
Python2中整型分为整型和长整型,Python3中统称为整型,长整型被Python3废弃,统一使用int
- mockingbird@MockingbirddeMacBook-Air ~ % python2
-
-
- >>> type(123)
- <type 'int'>
- >>> type(10000000000000000000000)
- <type 'long'>
- >>>
- mockingbird@MockingbirddeMacBook-Air ~ % python3
-
- >>> type(123)
- <class 'int'>
- >>> type(100000000000000000000)
- <class 'int'>
- >>>
4.整除有差异
python2中的“/”是地板除(向下取最接近的整数),python2要想真除,就要转换为浮点数。python3中的“/”是真除,要想得到地板除结果,使用“//”
- mockingbird@MockingbirddeMacBook-Air ~ % python2
- >>> 6/4
- 1
- >>> 6.0/4.0
- 1.5
- >>>
- mockingbird@MockingbirddeMacBook-Air ~ % python3
- >>> 6/4
- 1.5
- >>> 6//4
- 1
5.不等于操作符有差异
Python2中有"<>"和"!="两种方式表示不等于,Python3中只能用"!="表示。不相等操作符"<>"被Python3废弃,统一使用"!="
- mockingbird@MockingbirddeMacBook-Air ~ % python2
- >>> 1!=2
- True
- >>> 1<>2
- True
- mockingbird@MockingbirddeMacBook-Air ~ % python3
- >>> 1!=2
- True
- >>> 1<>2
- File "<stdin>", line 1
- 1<>2
- ^
- SyntaxError: invalid syntax
- >>>
6.range有差异
xrange函数被python3废弃,统一使用range。python2中range返回的是一个列表,xrange返回的是一个可迭代对象。python3中range返回的是一个可迭代对象
- mockingbird@MockingbirddeMacBook-Air ~ % python2
- >>> range(10)
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- >>> xrange(10)
- xrange(10)
- >>>
- mockingbird@MockingbirddeMacBook-Air ~ % python3
- >>> range(10)
- range(0, 10)
- >>> xrange(10)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- NameError: name 'xrange' is not defined
- >>>
7.异常机制的差异
- python2:
- except IndexError , ie:
- python3:
- except IndexError as ie:
8.python2的默认编码是ASCLL码,python3的默认编码是utf-8
9.布尔类型的差异:python3中的True和False属于关键字,而在python2中不属于
10.python2中没有f标识符表示格式化的用法,python3中有
11.包目录结构的不同
包结构的目录里面可以有一个 __init__.py 模块,python2:__init__.py是必须的,python3:__init__.py是可选的
12.python3中string.letters和相关的string.lowercase和string.uppercase被去除,请改用string.ascii_letters 、string.ascii_lowercase、string.ascii_uppercase等
13.python中类的定义不同:
- class Atm():
- pass
- class Atm:
- pass
- class Atm(object):
- pass
python2中类的定义包括经典类和新式类
python3中类的定义只有新式类
python2中显示的继承object的类称为新式类,否则称为经典类(在python2中,上面的前两种为经典类,最后一种为新式类)
python3种默认都是继承object,所以都是新式类(以上三种在python3中都属于新式类)
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。