您的位置:首页 > 编程语言 > Python开发

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

2016-02-16 10:56 831 查看
Python2.7 vs Python3

# 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


References

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

[2] Python 3 初探,第 1 部分: Python 3 的新特性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: