input和raw_input的区别

input 和 raw_input

我们看下面的代码

#!/usr/bin/python
name = input("What is your name ?")
print "hello,"+name+"!"

执行,输入name,直接就报错了

   What is your name ?awen
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    name = input("What is your name ?")
  File "<string>", line 1, in <module>
NameError: name 'awen' is not defined

而加上引号输入则没有问题

What is your name ?"awen"
hello,awen!

因为 input 会假设输入的是合法的表达式,如果输入带引号的值是没有问题的。

那么修改为 raw_input 呢

#!/usr/bin/python
name = raw_input("What is your name ?")
print "hello,"+name+"!"

我们在保存运行下,完全没问题

What is your name ?awen
hello,awen!

所以,在编写 python 程序,要求输入时,除非特别的需求,否则尽量使用 raw_input