首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`input`与`raw_input`的区别

`input`与`raw_input`的区别
EN

Stack Overflow用户
提问于 2010-09-27 11:07:33
回答 3查看 30.8K关注 0票数 10

在一篇教程中,我读到inputraw_input是有区别的。我发现它们改变了Python3.0中这些函数的行为。新的行为是什么?

为什么在python控制台解释器中这样做?

代码语言:javascript
复制
x = input()

发送一个错误,但是如果我把它放在一个file.py中并运行它,它不会吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-27 11:12:18

在Python2.x中,raw_input()返回一个字符串,input()在调用它的执行上下文中计算输入

代码语言:javascript
复制
>>> x = input()
"hello"
>>> y = input()
x + " world"
>>> y
'hello world'

在Python3.x中,input已被废弃,以前称为raw_input的函数现在是input。因此,如果您想要旧的功能,则必须手动调用compile,然后再调用eval

代码语言:javascript
复制
python2.x                    python3.x

raw_input()   --------------> input()               
input()  -------------------> eval(input())     

在3.x中,上面的会话是这样的

代码语言:javascript
复制
>>> x = eval(input())
'hello'
>>> y = eval(input())
x + ' world'
>>> y
'hello world'
>>> 

所以你可能在解释器上得到了一个错误,因为你没有在你的输入两边加引号。这是必要的,因为它是经过评估的。你在哪里得到一个名称错误?

票数 18
EN

Stack Overflow用户

发布于 2010-12-19 20:51:09

input() vs raw_input()

raw_input收集用户键入的字符,并将其表示为字符串。input()不仅计算数字,还将任何输入视为Python代码并尝试执行它。见多识广但怀有恶意的用户可以输入Python命令,甚至可以删除文件。坚持使用raw_input(),并使用Python的内置转换函数将字符串转换为所需的数据类型。

还有input(),不是安全的用户错误!它需要一个有效的Python表达式作为输入;如果输入在语法上无效,则将引发SyntaxError。

票数 3
EN

Stack Overflow用户

发布于 2013-11-18 23:06:27

很简单:

  1. raw_input()返回字符串值
  2. ,而input()返回整数值

例如:

1.

代码语言:javascript
复制
x = raw_input("Enter some value = ")
print x

输出:

代码语言:javascript
复制
Enter some value = 123
'123'

2.

代码语言:javascript
复制
y = input("Enter some value = ") 
print y

输出:

代码语言:javascript
复制
Enter some value = 123
123

因此,如果我们执行x + x =,它将输出为123123

而如果我们执行y + y =,它将输出为246

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3800846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档