欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 教程 | Python3 与 Python2 核心区别及代码示例

教程 | Python3 与 Python2 核心区别及代码示例

2025/2/13 11:43:32 来源:https://blog.csdn.net/weixin_48953586/article/details/145596906  浏览:    关键词:教程 | Python3 与 Python2 核心区别及代码示例

Python3 和 Python2 是两个长期并行的版本,但 Python3 在语法、功能和设计理念上进行了多项改进。尤其是迁移旧项目或编写兼容代码时。以下是二者的核心差异及代码示例:


1. Print 函数:从语句到函数

Python2 中 print语句,而 Python3 将其改为函数,支持更灵活的调用方式。

Python2

print "Hello World"  # 无需括号

Python3

print("Hello World")  # 必须使用括号

2. 整数除法行为

Python3 的除法更符合数学直觉,而 Python2 的整数除法会直接截断。

Python2

print 3 / 2   # 输出 1(整数除法)
print 3 // 2  # 输出 1(显式整除)

Python3

print(3 / 2)  # 输出 1.5(浮点数结果)
print(3 // 2) # 输出 1(显式整除)

3. Unicode 字符串

Python3 默认使用 Unicode 字符串,而 Python2 需显式声明。

Python2

s = '中文'          # 字节字符串(可能引发编码错误)
u = u'unicode文本'  # 需显式声明 Unicode

Python3

s = '中文'          # 直接支持 Unicode
b = b'byte string'  # 字节字符串需显式声明

4. 迭代器与生成器

Python3 优化了迭代器行为,range 和字典方法更高效。

Python2

range(5)        # 生成列表 [0,1,2,3,4]
xrange(5)       # 生成迭代器(节省内存)
d = {'a':1}; d.items()  # 返回键值对列表

Python3

range(5)        # 直接生成迭代器
d = {'a':1}; d.items()  # 返回视图对象(动态反映字典变化)

5. 异常处理语法

Python3 要求更严格的异常捕获语法。

Python2

try:raise ValueError
except ValueError, e:  # 使用逗号分隔print str(e)

Python3

try:raise ValueError
except ValueError as e:  # 必须使用 as 关键字print(e)

6. 输入函数

Python3 统一了输入函数,避免安全风险。

Python2

name = raw_input("Enter name: ")  # 返回字符串
age = input("Enter age: ")        # 自动求值(如输入 10+5 会返回 15)

Python3

name = input("Enter name: ")  # 直接返回字符串(等效于 Python2 的 raw_input)

7. 元类(Metaclass)语法

Python3 简化了元类定义方式。

Python2

class MyClass(object):__metaclass__ = MyMeta  # 在类内部指定元类

Python3

class MyClass(metaclass=MyMeta):  # 通过参数声明pass

8. 其他关键区别

  • 八进制表示:Python3 使用 0o777 替代 Python2 的 0777
  • 函数注解:Python3 支持类型注解(如 def func(a: int) -> str:)。
  • 协程语法:Python3.5+ 引入 asyncawait 关键字。

迁移建议

  1. 使用 2to3 工具自动转换代码。
  2. 在 Python2 代码中添加 __future__ 导入(如 from __future__ import print_function)以兼容 Python3。
  3. 优先使用 Python3 的语法特性编写新项目。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com