【python2.7】raw_input()和input()区别及用法

  • Post author:
  • Post category:python


一、函数介绍


1. input([prompt])

等同于eval(raw_input([prompt])),这个函数不会捕捉用户输入上的错误,如果语法校验不通过会引发SyntaxError。在eval函数执行过程中也会跑出其他的异常。

在eval函数执行过程中也会抛出其他的异常;

还有一段相关于

Python

readline()的解释,暂时没懂,o(╯□╰)o。


推荐接受用户输入的时候使用raw_input()


2. raw_input([prompt])

如果传了prompt参数,它会直接输出到屏幕上而不用再往下另起一行,如:

从输入中读取一行,将其转换成string类型,然后返回。当碰到EOF,会引发EOFerror。

二、相同点&区别

1. 相同点

都能接受字符串、表达式作为输入。

  1. <span style=

    “font-family:Verdana;font-size:18px;”>>> raw_input(

    1>

    0)



  2. True
  3. >>> raw_input(

    “input:”)
  4. input:</span>

2. 区别

通过简介,二者的区别其实已经很清楚了:

a. 原理上input()是一个特殊的raw_input(),只是外层调用了eval()函数而已;

b. input()接受输入并计算,如果输入为字符串,进行到eval()处理的时候会将刚才输入的字符串当成是一个变量,请看:

  1. <span style=

    “font-family:Verdana;font-size:18px;”>>>> a =

    1

  2. >>> input()
  3. a

  4. 1</span>

我输入的字符串是a,而最后input()给我返回的是a的值,即为1

然而,raw_input()接受输入转换成string返回。

看看下面几个列子:

  1. <span style=

    “font-family:Verdana;font-size:18px;”>

    # 输入纯字符串

  2. >> input()
  3. iaminput
  4. Traceback (most recent call last):
  5. File

    “<stdin>”, line

    1,

    in <module>


  6. File

    “<string>”, line

    1,

    in <module>


  7. NameError: name

    ‘iaminput’

    is

    not defined


  8. >>> raw_input()
  9. iaminput

  10. ‘iaminput’

  11. # 输入表达式
  12. >>> a = input()

  13. 1+

    1

  14. >>>

    print a,type(a)

  15. 2 <type

    ‘int’>

  16. >>> b = raw_input()

  17. 1+

    1

  18. >>>

    print b,type(b)

  19. 1+

    1 <type

    ‘str’></span>


三、总结

总之,尽量使用raw_input()以避免一些不必要的事情发生。