博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[python]python2与python3版本的区别
阅读量:6302 次
发布时间:2019-06-22

本文共 2162 字,大约阅读时间需要 7 分钟。

python2和python3的区别

区别:

  • print函数
  • 整数相除
  • Unicode
  • 异常处理
  • xrange
  • map函数
  • 不支持has_key

print函数:

Python 2:  print是语句(statement)

print "Hello World!"# 结果:Hello World!

Python 3:  print是函数

print('Hello World!')# 结果:Hello World!print 'Hello World'# 结果:SyntaxError: Missing parentheses in call to 'print'. Did you mean print('Hello World')?

 

整数相除:

Python 2:  3/2的结果是整数

print 3 / 2# 结果:1print 3 / 2.0# 结果:1.5

Python 3:  3/2的结果是浮点数

print(3 / 2)# 结果:1.5print(3 / 2.0)# 结果:1.5

 

Unicode:

Python 2:  有两种字符串类型:str和unicode

a = '您好'print a# 结果:SyntaxError: Non-ASCII character '\xe6' in file ......, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details# 在Python 2中,如果代码中包含非英文字符,需要在代码文件的最开始声明编码 # _*_ coding:utf-8 _*_a = '您好'print a# 结果:您好

Python 3:  字符串默认就是Unicode

a = '您好'print(a)# 结果:您好

Python 3中的str相当于Python 2中的unicode

 

异常处理:

Python 2:

try:    result = 1 / 0    print resultexcept ZeroDivisionError, e:    print str(e)# 结果:integer division or modulo by zero

try:    result = 1 / 0    print resultexcept ZeroDivisionError as e:    print str(e)# 结果:integer division or modulo by zero

Python 3:  只支持as关键字

try:    result = 1 / 0    print(result)except ZeroDivisionError as e:    print(str(e))# 结果:division by zero

 

xrange:

Python 2:  有 range 和 xrange 两个方法

区别:

  • range返回一个list,在被调用的时候即返回整个序列
  • xrange返回一个iterator,在每次循环中生成序列的下一个数字
# rangeprint range(4)# 结果:[0, 1, 2, 3]# xrangeprint xrange(4)# 结果:xrang(4)

Python 3:  不再支持 xrange 方法

print(range(4))# 结果:range(0, 4)for i in range(4):    print(i, end=' ')# 结果:0 1 2 3

Python 3中的 range 方法就相当于 Python 2中的 xrange 方法

 

map函数:

Python 2:  map函数返回list

print map(lambda x: x+1, range(5))# 结果:[1, 2, 3, 4, 5]

Python 3:  map函数返回iterator

print(map(lambda x: x+1, range(5)))# 结果:print(list(map(lambda x: x+1, range(5))))# 结果:[1, 2, 3, 4, 5]

filter函数在Python 2和Python 3中也是同样的区别

 

不支持has_key:

Python 2:

my_dict = {
"age": 30, "name": "Zhang San"}print my_dict.has_key("age")print "age" in my_dict# 结果:True# True

Python 3:

my_dict = {
"age": 30, "name": "Zhang San"}print("age" in my_dict)# 结果:Trueprint(person.has_key("age"))# 结果:AttributeError: 'dict' object has no attribute 'has_key'

 

转载于:https://www.cnblogs.com/ttkl/p/9398791.html

你可能感兴趣的文章
城市 | 800个地铁站数据透析的京沪白领图鉴:隐形土豪、无产中产阶级和猪猪女孩...
查看>>
前端脚本!网站图片素材中文转英文
查看>>
linux的常用易忘命令
查看>>
PHP 分割字符串
查看>>
java 基于QRCode、zxing 的二维码生成与解析
查看>>
关于职业规划的一些思考
查看>>
img垂直水平居中与div
查看>>
Fabrik – 在浏览器中协作构建,可视化,设计神经网络
查看>>
防恶意注册的思考
查看>>
http2-head compression
查看>>
C# 命名空间
查看>>
订餐系统之同步美团商家订单
查看>>
使用ArrayList时设置初始容量的重要性
查看>>
Java Web-----JSP与Servlet(一)
查看>>
Maven搭建SpringMVC+Mybatis项目详解
查看>>
关于量子理论:最初无意的简化,和一些人有意的强化和放大
查看>>
CentOS 6.9通过RPM安装EPEL源(http://dl.fedoraproject.org)
查看>>
“区块链”并没有什么特别之处
查看>>
2017年IT基础架构五大预测
查看>>
没有功能需求设计文档?对不起,拒绝开发!
查看>>