Python学习
001、基础篇
002、python2和python3的区别
001、环境安装-Windows系统
003、基础语法
003、基础语法2
002、进阶阶段
003、实战阶段
004、持续学习与提升
基础语法思维导图
本文档使用 MrDoc 发布
-
+
首页
002、python2和python3的区别
### 1. **语法差异** - **`print` 语句**: - Python 2 中,`print` 是一个语句,使用起来较为灵活。 ```python print "Hello, World!" ``` - Python 3 中,`print` 被改为一个函数,必须使用函数语法。 ```python print("Hello, World!") ``` - **`exec` 语句**: - Python 2 中,`exec` 是一个语句。 ```python exec "print 'Hello, World!'" ``` - Python 3 中,`exec` 被改为一个函数。 ```python exec("print('Hello, World!')") ``` - **`raise` 语句**: - Python 2 中,`raise` 语句的语法较为宽松。 ```python raise IOError, "file error" ``` - Python 3 中,`raise` 语句的语法更加严格,必须使用 `as` 关键字。 ```python raise IOError("file error") ``` ### 2. **`integer` 类型除法** - Python 2 中,整数相除的结果会向下取整。 ```python print(3 / 2) # 输出 1 ``` - Python 3 中,整数相除的结果会返回一个浮点数。 ```python print(3 / 2) # 输出 1.5 ``` ### 3. **`Unicode` 和字符串** - Python 2 中,默认的字符串类型是 `ASCII`,需要使用 `u''` 来表示 Unicode 字符串。 ```python s = 'Hello, World!' # ASCII 字符串 u = u'Hello, World!' # Unicode 字符串 ``` - Python 3 中,默认的字符串类型是 Unicode,无需特殊标记。 ```python s = 'Hello, World!' # Unicode 字符串 ``` ### 4. **`range()` 和 `xrange()`** - Python 2 中,`range()` 返回一个列表,而 `xrange()` 返回一个迭代器。 ```python print(range(5)) # 输出 [0, 1, 2, 3, 4] print(xrange(5)) # 输出一个 xrange 对象 ``` - Python 3 中,`range()` 的行为类似于 Python 2 中的 `xrange()`,返回一个迭代器。 ```python print(range(5)) # 输出 range(0, 5) ``` ### 5. **`迭代器`** - Python 3 中,许多内置函数和方法返回迭代器而不是列表,例如 `map()`、`filter()` 等。 ```python map_result = map(lambda x: x**2, range(5)) # 返回一个迭代器 ``` - Python 2 中,这些函数默认返回列表。 ### 6. **`字典` 的 `view` 和 `迭代器` 方法** - Python 3 中,字典的 `.keys()`、`.values()` 和 `.items()` 方法返回视图对象而不是列表。 ```python d = {'a': 1, 'b': 2} print(d.keys()) # 输出 dict_keys(['a', 'b']) print(d.values()) # 输出 dict_values([1, 2]) print(d.items()) # 输出 dict_items([('a', 1), ('b', 2)]) ``` - Python 2 中,这些方法返回列表。 ### 7. **`异常处理`** - Python 3 中,`except` 语句的语法必须使用 `as` 关键字。 ```python try: # 可能引发异常的代码 except IOError as e: print(e) ``` - Python 2 中,可以使用逗号分隔异常类型和变量名。 ```python try: # 可能引发异常的代码 except IOError, e: print e ``` ### 8. **`类` 的定义** - Python 3 中,所有类都隐式继承自 `object`,无需显式指定。 ```python class MyClass: pass ``` - Python 2 中,需要显式继承自 `object` 才能创建新式类。 ```python class MyClass(object): pass ``` ### 9. **`元组` 解包** - Python 3 中,元组解包更加严格,不允许在某些情况下进行解包。 ```python x, y = 1, 2, 3 # 会引发 ValueError ``` - Python 2 中,这种解包会引发 `ValueError`,但某些情况下可能表现不同。 ### 10. **`函数注解`** - Python 3 引入了函数参数和返回值的注解功能。 ```python def greet(name: str, age: int = 0) -> str: return f"Hello, {name}! You are {age} years old." ``` - Python 2 中没有这个功能。 ### 11. **`模块和库`** - Python 3 的标准库经过了重新组织和改进,某些模块被重命名或合并。 - Python 3 引入了新的模块,例如 `pathlib`,用于更方便的文件路径操作。 ### 12. **`性能改进`** - Python 3 在某些方面进行了性能优化,例如字典的实现更高效。 - Python 3 引入了 `yield from` 语法,简化了协程的编写。 ### 13. **`asyncio` 和异步编程** - Python 3.4 引入了 `asyncio` 模块,用于异步编程。 - Python 3.5 引入了 `async` 和 `await` 语法,使得异步代码更加简洁。 ### 14. **`停用和移除特性`** - Python 3 移除了一些在 Python 2 中已经不推荐使用的特性,例如 `apply()`、`callable()` 等。 - Python 3 引入了许多新的特性,而 Python 2 则停止了更新。 ### 15. **`社区支持`** - Python 2 的官方支持已于 2020 年 1 月停止,这意味着不再有安全更新和新特性添加。 - Python 3 是当前的活跃版本,社区和开发者推荐使用 Python 3。 总的来说,Python 3 是对 Python 2 的一次重大改进,修复了许多设计上的不足,并为未来的发展奠定了基础。虽然两者之间存在一些兼容性问题,但 Python 3 的功能更强大、更现代化,建议在新项目中优先使用 Python 3。
个人天使
2025年3月27日 15:54
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码