苏州塔维斯网站建设温州seo招聘
Python 2 和 Python 3 之间有许多差异,Python 3 是 Python 语言的更新版本,目的是解决 Python 2 中的一些设计缺陷,并引入更现代的编程方式。以下是 Python 2 和 Python 3 之间的一些主要区别:
文章目录
- 1. `print` 语句
- 2. 整除行为
- 3. Unicode 字符串处理
- 4. `range()` 函数
- 5. `xrange()` 的移除
- 6. 异常处理语法
- 7. `input()` 函数
- 8. 字典的 `items()`、`keys()` 和 `values()`
- 9. 函数的返回值
- 10. 标准库的变化
- 总结:
1. print
语句
- Python 2:
print
是一个语句,可以不使用括号。 - Python 3:
print
是一个函数,必须使用括号。
示例:
- Python 2:
print "Hello, World!" # 无括号
- Python 3:
print("Hello, World!") # 使用括号
2. 整除行为
- Python 2:
/
操作符进行整数除法时,如果两个操作数是整数,它会进行 向下取整 的除法。 - Python 3:
/
始终执行浮点数除法,即使是两个整数。
示例:
- Python 2:
print 3 / 2 # 输出 1
- Python 3:
print(3 / 2) # 输出 1.5
- 在 Python 2 中,使用
from __future__ import division
可以启用 Python 3 的除法行为。
3. Unicode 字符串处理
- Python 2:字符串默认是 ASCII 编码,处理 Unicode 字符串需要使用
u"..."
。 - Python 3:所有字符串默认都是 Unicode,使用更加便捷。
示例:
- Python 2:
u"你好,世界" # 必须显式加 `u`
- Python 3:
"你好,世界" # 默认 Unicode,无需 `u`
4. range()
函数
- Python 2:
range()
返回的是一个列表,生成所有数字并存储在内存中。 - Python 3:
range()
返回的是一个生成器对象,使用时才会生成数字,节省内存。
示例:
- Python 2:
print range(5) # 输出 [0, 1, 2, 3, 4]
- Python 3:
print(range(5)) # 输出 range(0, 5) list(range(5)) # 输出 [0, 1, 2, 3, 4]
5. xrange()
的移除
- Python 2:有
range()
和xrange()
两个函数,xrange()
返回生成器,节省内存。 - Python 3:
xrange()
被移除,range()
具有与xrange()
相同的功能。
6. 异常处理语法
- Python 2:异常处理使用
as
关键字时,语法较为宽松,可以使用逗号。 - Python 3:异常处理必须使用
as
关键字。
示例:
- Python 2:
try:raise ValueError("error") except ValueError, e: # 使用逗号print e
- Python 3:
try:raise ValueError("error") except ValueError as e: # 必须使用 `as`print(e)
7. input()
函数
- Python 2:
input()
会将用户输入的内容作为代码执行,存在安全隐患。raw_input()
用来获取用户的字符串输入。 - Python 3:
input()
返回的是字符串,raw_input()
被移除。
示例:
- Python 2:
name = raw_input("Enter your name: ") # 使用 raw_input 获取字符串
- Python 3:
name = input("Enter your name: ") # input 返回字符串
8. 字典的 items()
、keys()
和 values()
- Python 2:
items()
、keys()
和values()
返回的是列表。 - Python 3:它们返回的是视图对象,可以使用
list()
来转换为列表。
示例:
- Python 2:
my_dict = {'a': 1, 'b': 2} print my_dict.items() # 输出 [('a', 1), ('b', 2)]
- Python 3:
my_dict = {'a': 1, 'b': 2} print(my_dict.items()) # 输出 dict_items([('a', 1), ('b', 2)]) print(list(my_dict.items())) # 输出 [('a', 1), ('b', 2)]
9. 函数的返回值
- Python 2:如果函数没有显式的
return
语句,默认返回None
。 - Python 3:与 Python 2 一样,但函数的行为在特定情况下更加严格。
10. 标准库的变化
- Python 3:很多标准库的模块有了重命名或调整,如
ConfigParser
模块在 Python 3 中改名为configparser
,Queue
改为queue
等。
总结:
Python 3 引入了许多改进,使得代码更加简洁、统一和现代化。Python 2 虽然仍被一些旧系统使用,但官方已经停止支持,因此新项目应该使用 Python 3。