热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python2和python3版本有哪些区别

这篇文章主要介绍了python2和python3版本有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小

这篇文章主要介绍了python2和python3版本有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Python主要用来做什么

Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游戏开发;6、桌面应用开发。

python2和python3的版本,目前主要分为两类:

Python 2.x的版本,被称为Python2,目前最新版是2.7.18

Python 3.x的版本,被称为Python3,目前最新版是3.9.1

从Python2到Python3是一个大版本升级,两者之间有很多地方互不兼容。

使用时当然选择越新的Python版本越好,版本越老的代码越难维护。

维护老版本的代码时,需要了解各版本之间的主要差异。有时看到一些代码的语法特点,可以大致猜出它是什么版本

Python2和Python3之间的变化主要在以下几个方面

1.print函数:

Python 2:print是语句

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')?

2.整数相除:

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

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

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

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

3.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

4.异常处理:

Python 2:

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

try:
    result = 1 / 0
print result
except 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

5.xrange:

Python 2:有 range 和 xrange 两个方法

区别:

range返回一个list,在被调用的时候即返回整个序列

xrange返回一个iterator,在每次循环中生成序列的下一个数字

# range
print range(4)
# 结果:[0, 1, 2, 3]
# xrange
print 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 方法

6.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中也是同样的区别

7.不支持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)
# 结果:True
print(person.has_key("age"))
# 结果:AttributeError: 'dict' object has no attribute 'has_key'

感谢你能够认真阅读完这篇文章,希望小编分享的“python2和python3版本有哪些区别”这篇文章对大家有帮助,同时也希望大家多多支持编程笔记,关注编程笔记行业资讯频道,更多相关知识等着你来学习!


推荐阅读
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • iOS 不定参数 详解 ... [详细]
  • 本文总结了Java初学者需要掌握的六大核心知识点,帮助你更好地理解和应用Java编程。无论你是刚刚入门还是希望巩固基础,这些知识点都是必不可少的。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本题主要考察二维数组的遍历和重塑。通过将二维数组降为一维,再根据新的行数和列数重新构建矩阵。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 一篇关于五个编程问题的 Reddit 帖子引发了广泛讨论,特别是关于这些题目是否适合所有软件工程师。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
author-avatar
夜-依晨_920
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有