Python2中的raw_input() 与 input()


Posted in Python onJune 12, 2015

这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互。但他们的功能不尽相同。举两个小例子。

>>> raw_input_A = raw_input("raw_input: ")
raw_input: abc
 >>> input_A = input("Input: ")
Input: abc

Traceback (most recent call last):
 File "<pyshell#1>", line 1, in <module>
  input_A = input("Input: ")
 File "<string>", line 1, in <module>
NameError: name 'abc' is not defined
 >>> input_A = input("Input: ")
Input: "abc"
 >>>

>>> raw_input_B = raw_input("raw_input: ")
raw_input: 123
 >>> type(raw_input_B)
 <type 'str'>
>>> input_B = input("input: ")
input: 123
>>> type(input_B)
<type 'int'>
>>>

例子 1 可以看到:这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

例子 2 可以看到:raw_input() 将所有输入作为字符串看待,返回字符串类型。而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float );同时在例子 1 知道,input() 可接受合法的 python 表达式,举例:input( 1 + 3 ) 会返回 int 型的 4 。

查看 Built-in Functions ,得知:

input([prompt])

  Equivalent to eval(raw_input(prompt))

input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数,所以,你甚至可以将表达式作为 input() 的参数,并且它会计算表达式的值并返回它。

不过在 Built-in Functions 里有一句话是这样写的:Consider using the raw_input() function for general input from users.

除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。

-------

今天参加某公司的笔试的时候,俺使用了 raw_input() 接受整数(返回的是字符串)并再用一行语句返回整型数据。杯具,当时不大确定能用 input() 这个函数!特此记录。

Python 相关文章推荐
Python实现的最近最少使用算法
Jul 10 Python
Python中super()函数简介及用法分享
Jul 11 Python
Python方法的延迟加载的示例代码
Dec 18 Python
http请求 request失败自动重新尝试代码示例
Jan 25 Python
python实现微信发送邮件关闭电脑功能
Feb 22 Python
python3实现表白神器
Apr 09 Python
django迁移数据库错误问题解决
Jul 29 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
Python正则re模块使用步骤及原理解析
Aug 18 Python
Windows下实现Python2和Python3两个版共存的方法
Jun 12 #Python
Python3中的2to3转换工具使用示例
Jun 12 #Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 #Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 #Python
Python 3.x 新特性及10大变化
Jun 12 #Python
Python实现比较两个列表(list)范围
Jun 12 #Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 #Python
You might like
linux下 C语言对 php 扩展
2008/12/14 PHP
php设计模式小结
2013/02/15 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
php session_decode函数用法讲解
2019/05/26 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
浅谈js的异步执行
2016/10/18 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python连接mysql调用存储过程示例
2014/03/05 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
python pygame模块编写飞机大战
2018/11/20 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
Python如何操作docker redis过程解析
2020/08/10 Python
如何编写python的daemon程序
2021/01/07 Python
python 获取计算机的网卡信息
2021/02/18 Python
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
员工年终自我评价
2014/09/14 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
后天观后感
2015/06/08 职场文书
golang正则之命名分组方式
2021/04/25 Golang