# Python2.7
>>> base = input('input: ')
input: 5
>>> base
5
>>> type(base)
<type 'int'>
>>> base = input('input: ')
input: 3+5
>>> base
8
>>> base = input('input: ')
input: abc
input: abc
Traceback (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+5
8