Python2.x vs Python3——从 raw_input() 到 input()

来源:互联网 发布:linux uniq命令详解 编辑:程序博客网 时间:2024/05/17 08:59

Python2.7 vs Python3

# Python2.7>>> base = input('input: ')input: 5>>> base5>>> type(base)<type 'int'>>>> base = input('input: ')input: 3+5>>> base 8>>> base = input('input: ')input: abcinput: abcTraceback (most recent call last):  File "<stdin>", line 1, in <module>  File "<string>", line 1, in <module>NameError: name 'abc' is not defined

Python 2.x 中的 input() 函数需要的是一个有效的 Python 表达式(expression)。除此之外,在 Python 2.x 中,raw_input()会出标准输入(sys.stdin)读取一个输入并返回一个字符串。

>>> quest = raw_input('what is your quest? ')what is your quest? To seek the holy grail.>>> quest'To seek the holy grail.'

最初,曾有人建议将 input() 和 raw_input() 从 Python 内置的名称空间(namespace)一并删除,因此就需要进行导入来获得输入能力。这从方法上就不对。因为,简单键入:

>>> quest = input('what is your quest? ')

将会变为:

>>> import sys>>> print('what is your quest? ')>>> quest = sys.stdin.readline()

对于一个简单输入而言,这太过繁琐,并且对于一个新手,这未免太难理解。往往需要向他们讲述模块导入 究竟是怎么回事、字符串输出以及句点操作符又是如何工作的(如此麻烦的话,与 Java™ 语言就没什么差别了)。所以,在 Python 3 内,将 raw_input() 重命名为 input(),这样一来,无须导入也能从标准输入获得数据了。如果您需要保留版本 2.x 的 input() 功能,可以使用 eval(input()),效果基本相同。

# Python 3>>> base = input('input: ')input: 5>>> base'5'>>> type(base)str>>> base = input('input: ')input: abc>>> base'abc'>>> eval(input('input: '))input: 3+58

References

[1] raw_input() 与 input() __ Python

[2] Python 3 初探,第 1 部分: Python 3 的新特性

0 0
原创粉丝点击