Python是一种易学易用但功能强大的编程语言,有两个主要的版本:Python2和Python3。本文将从多个方面对Python2和Python3的语法进行详细阐述。
一、print语句
在Python2中,使用print语句来输出信息:
print "Hello, World!" # Python2中的print语句
而在Python3中,print语句变成了一个函数,需要使用括号包裹参数:
print("Hello, World!") # Python3中的print函数
Python3的新的print函数更加灵活,可以使用end参数指定输出结束时的字符:
print("Hello", end="***") # 在输出结束时使用***作为结束字符 print("World!")
二、整数和除法
在Python2中,整数除法是一个整数除以另一个整数得到一个整数,即使结果是一个小数:
print 5 / 2 # 输出为2,整数除法
而在Python3中,整数除法会得到一个浮点数的结果:
print(5 / 2) # 输出为2.5,浮点数除法
如果要在Python2中实现Python3的除法行为,可以在除数或被除数前面加上浮点数型的点:
print 5 / 2.0 # 输出为2.5,浮点数除法 print 5.0 / 2 # 输出为2.5,浮点数除法
三、range函数
在Python2中,range函数返回一个包含整数的列表:
print range(5) # 输出为[0, 1, 2, 3, 4]
而在Python3中,range函数返回一个迭代器对象,需要通过list函数将其转换为列表:
print(list(range(5))) # 输出为[0, 1, 2, 3, 4]
这个变化使得在Python3中处理大量数据时更加高效,因为不再需要一次性生成整个列表。
四、异常处理
在Python2中,异常处理使用的是except Exception, e:
的语法:
try: # 代码块 except Exception, e: # 异常处理代码块
而在Python3中,需要使用as
关键字来获取异常对象:
try: # 代码块 except Exception as e: # 异常处理代码块
Python3的异常处理语法更加清晰,使得代码更易读。
五、Unicode字符串
在Python2中,字符串有两种类型:普通字符串和Unicode字符串。普通字符串使用普通的引号表示,而Unicode字符串需要在引号前添加u
前缀:
print u"你好,世界!" # 输出为你好,世界!
而在Python3中,所有的字符串都是Unicode字符串,不再需要特定的前缀:
print("你好,世界!") # 输出为你好,世界!
这样做的好处是统一了字符串的处理,避免了编码问题。
六、迭代器与生成器
在Python2中,迭代器和生成器用的是不同的关键字:iter
和yield
。例如:
for i in iter([1, 2, 3]): print i def my_generator(): yield 1 yield 2 yield 3 for i in my_generator(): print i
而在Python3中,迭代器和生成器使用共同的关键字yield
:
for i in [1, 2, 3]: print(i) def my_generator(): yield 1 yield 2 yield 3 for i in my_generator(): print(i)
这样的改变使得Python3的代码更加一致和简洁。
七、输入函数
在Python2中,使用raw_input
函数来获取用户输入的字符串:
name = raw_input("请输入您的姓名:") print "您好," + name + "!"
而在Python3中,raw_input
函数被简化为input
函数,可以直接获取用户的输入:
name = input("请输入您的姓名:") print("您好," + name + "!")
这样的变化使得获取用户的输入更加简单和直观。
八、其他改进
除了上述的语法差异外,Python3还引入了许多其他的改进,包括更好的模块化、更强大的标准库、更多的内置函数等等。