zoukankan      html  css  js  c++  java
  • python中input()和raw_input()的区别

    两者均是python的内置函数,通过读取控制台的输入与用户实现交互。

    raw_input:将所有输入作为字符串看待,不管用户输入什么类型的都会转变成字符串。 
                      raw的含义就是: 生的;未加工的。

    >>> s1=raw_input()
    abc
    >>> s1
    'abc'
    >>> s2=raw_input()
    'abc'
    >>> s2
    "'abc'"
    >>> s3=raw_input()
    100
    >>> s3
    '100'
    >>> s4=raw_input()
    1+2
    >>> s4
    '1+2'

    当希望通过raw_input获取一个整型或者浮点数时,必须在生成后对其使用int或float进行转换。

    >>> x1=int(raw_input())
    34
    >>> x1
    34
    >>> x2=float(raw_input())
    1.25
    >>> x2
    1.25

    input():当输入一个字符串的时候必须使用引号将其括起来,否则他将会引发一个SyntaxError的问题。

    >>> help(input)
    Help on built-in function input in module __builtin__:
    
    input(...)
        input([prompt]) -> value
        
        Equivalent to eval(raw_input(prompt)).

    从上述说明中,可以发现其实input()的实现是调用raw_input()函数的,然后再进行了一次eval()。
    实现如下:

    def input(prompt):
         return (eval(raw_input(prompt)))  #input()相当于eval(raw_input())

    eval()在python中的实现如下:
    eval(str[,globals[,locals]])函数将字符串str当成有效Python表达式来求值,并返回计算结果。
    因此就不难发现为什么input()能够检测表达式了。

    eval()函数十分强大,它和int(将一个字符串转化成整数)还是有很大区别,这里暂不详述。

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

    补充:在Python 3.x之后已经用input()替代raw_input了,用法功能却跟Python2.x中的raw_input()一样。

  • 相关阅读:
    很久以前写的一个功能测试用例
    中外白领和无领的一天
    Five bugs in five minutes...
    Oracle SQL 性能优化技巧
    10款常用Java测试工具[转载]
    AJAX、AJAX实例及AJAX源代码(asp)
    各大银行的暗示[笑话]
    Tomcat集群与负载均衡(转载)
    简述CMMI2级的7个PA
    全面介绍单元测试 -转贴
  • 原文地址:https://www.cnblogs.com/huangbiquan/p/7775020.html
Copyright © 2011-2022 走看看