zoukankan      html  css  js  c++  java
  • eval(input())

    看到一段代码,判读输入的数字,用的是eval(input()),查了一下,原来input()会把所有输入值,包括数字,视为字符串,而eval()会去掉字符串最外层的引号,然后当做Python语句执行[mark:语句or表达式,应该是表达式!],直观理解是:看起来像数字的字符串变成数字了。。。

    >>> a = input()
    123
    >>> type(a)
    <class 'str'>
    >>> b = eval(input())
    456
    >>> type(b)
    <class 'int'>
    >>>

     一个反例

    >>> a = eval("'pybook'")
    >>> a
    'pybook'
    

    所以本质上,eval是去一层引号,然后按语句执行,eval(input())本质是一个取输入数字的技巧

    如果不用eval,怎么取输入的数字?

    可以用int, float转数据类型,但效果不如eval

    一点补充说明

    对于eval(input()),input隐含会在输入最外层加一层引号,即把输入视为一个字符串,eval隐含会去最外层引号,如果输入的字符串带了引号,则这个引号会保留,看下面的例子

    >>> guess = input()
    0x452//2
    >>> guess
    '0x452//2'
    >>> guess = eval(input())
    0x452//2
    >>> guess
    553
    >>> guess = eval(input())
    '0x452//2'
    >>> guess
    '0x452//2' #保留输入的引号
    >>> guess = input()
    '0x452//2'
    >>> guess
    "'0x452//2'" #2层引号
    >>> 
    

      

  • 相关阅读:
    Unity3D 4.0 界面 基础 入门
    try catch finally 用法
    Mysql表引擎Innodb、MyIsam、Memory
    初步的kudu+impala vs dorisdb vs tidb
    mysql创建类似oracle的dblink
    jedis请求keys超时报错
    php 1223
    php 1214
    php 1216
    php 1222
  • 原文地址:https://www.cnblogs.com/jamesxu/p/10802577.html
Copyright © 2011-2022 走看看