Python2 和Python3 区别
来源:互联网 发布:淘宝客扣费好吓人 编辑:程序博客网 时间:2024/06/10 08:50
以下是我使用的python版本。
python2:>>> import sys>>> print sys.version2.7.12+ (default, Sep 17 2016, 12:08:02) [GCC 6.2.0 20160914]
python3:
>>> import sys>>> print(sys.version)3.5.2+ (default, Sep 22 2016, 12:18:14) [GCC 6.2.0 20160927]
- print变为了函数
print 'Hello, World!'
Hello, World!
Python3:print 'Hello, World!'
File "<stdin>", line 1 print 'Hello, World!' ^SyntaxError: Missing parentheses in call to 'print'
print('Hello, World!')
Hello, World!
注意:给python2的print加括号并不和python3等效,以下是反例。python2:
print(1,2)
(1, 2)
python3:print(1,2)
1 2
因为在python2里print不是函数,括号内如果没有逗号会被认为是数学表达式的括号,忽略;如果有逗号,则会被认为是tuple。
- raw_input重命名为input,覆盖了原来的input函数,且raw_input这个函数名不再使用。
>>> print type(input('Enter a number: '))Enter a number: 3<type 'int'>>>> print type(raw_input('Enter a number: '))Enter a number: 3<type 'str'>
python3:
>>> print(type(input('Enter a number: ')))Enter a number: 3<class 'str'>>>> print(type(raw_input('Enter a number: ')))Traceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name 'raw_input' is not defined
- 整形除法自动转为float
1/22/21//2
0
1
0
1/22/21//2
0.5
1.0
0
此外,long类型更名为int,覆盖了int类型,long类型这个名称不再使用。此外sys.maxint不存在了,因为现在int没有最大值了。
- 针对结尾是.5的小数,取整由四舍五入变为取最接近的偶数(银行家舍入法)
round(1.5)round(2.5)
2
3
round(1.5)round(2.5)
2
2
- 字符串统一用Unicode,并且增加了专门储存字节数据的类
print('\u03BCnico\u0394é!')
\u03BCnico\u0394é!
python3:print('\u03BCnico\u0394é!')
μnicoΔé!
增加的两个类是byte和bytearray,用来和字符串区分。
- range跟xrange差不多了,因此xrange不存在了
type(range(5))type(xrange(5))
<type 'list'>
<type 'xrange'>
type(range(5))
<class 'range'>
python3的range和原来的xrange还是有一点点区别的。python2:
xrange(2**1000)
Traceback (most recent call last): File "<stdin>", line 1, in <module>OverflowError: Python int too large to convert to C long
python3:
range(2**1000)
range(0, 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376)
- 跟print一样,抛出异常也必须用括号了
raise Exception, 'for test'
Traceback (most recent call last): File "<stdin>", line 1, in <module>Exception: for test
python3:
raise Exception, 'for test'
File "<stdin>", line 1 raise Exception, 'for test' ^SyntaxError: invalid syntax
raise Exception('for test')
Traceback (most recent call last): File "<stdin>", line 1, in <module>Exception: for test
- 捕获异常必须使用except...as...的格式
>>> try:... a = b... except NameError, err:... print "Something's wrong!"... print err... Something's wrong!name 'b' is not defined>>> try:... a = b... except NameError as err:... print "Something's wrong!"... print err... Something's wrong!name 'b' is not defined
python3:
>>> try:... a = b... except NameError, err: File "<stdin>", line 3 except NameError, err: ^SyntaxError: invalid syntax>>> try:... a = b... except NameError as err:... print("Something's wrong!")... print(err)... Something's wrong!name 'b' is not defined
编写过程中主要参考了这篇文章:
The key differences between Python 2.7.x and Python 3.x with examples
https://docs.python.org/3/whatsnew/3.0.html
- Python2 和Python3 区别
- python2和python3区别
- Python2和Python3区别
- python2和python3区别
- python3和python2的区别
- python3和python2的区别
- python2和python3的区别
- python2和python3编码区别
- python2 和Python3的区别
- python2和python3的区别
- python2和python3的区别
- Python2和Python3的区别
- python2和python3主要区别
- python2和python3的区别
- Python2和Python3的区别
- python2和python3的区别
- python2和python3的区别
- python2 和 python3 的区别
- 做网站seo优化这么长时间了 说下seo背面的一些秘籍
- struts2 s2-045初探
- 如何解决ajax跨域问题
- 端口号的分类
- C#.NET 虚方法中中的virtual 和override关键字的使用
- Python2 和Python3 区别
- 数据库缓存依赖
- Android Realm数据库配合aop框架封装
- Spring+SpringMVC+Mybatis+jdbc基础框架搭建(注解版)
- 限定二维码扫描范围
- Android7.0中文文档(API)-- RelativeLayout.LayoutParams
- 简单介绍ubuntu server与desktop关系以及解决ubuntu server下的mysql无法被远程连接
- Android Animation动画原理源码分析
- 验证码图片生成