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

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 的新特性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值