zoukankan      html  css  js  c++  java
  • python内置函数--eval()

    eval()为python的内置函数,它将字符串转化为有效的表达式计算,并返回计算结果。简单理解为将你输入的字符串当成python表达式执行。

    • eval()函数实例

      1、概念比较简单,看下面的例子:

    from functools import reduce
    
    value1 = eval("1+1+2+3+5+8+13+21")
    print(value1)
    
    a = [1, 2, 3]
    eval("a.append(4)")
    print(a)
    
    print(type(eval("{'A':'a', 'B':'b', 'C':'c'}")))
    
    b = [1, 2, 3, 4, 5, 6]
    print(eval("reduce(lambda x, y: x*y, b)"))  # 阶乘

    结果:

      54
      [1, 2, 3, 4]
      <class 'dict'>
      720

      2、另一个可供参考的例子是可以利用eval()函数实现一个简答的计算器,他不用使用户挨个输入计算的数字,如下:

    input_data = input("请输入数学表达式!")
    value2 = eval(input_data)
    print(value2)

    运行程序用户输入
      请输入数学表达式!1+3+5+7+9

    结果:
      25
    • 慎用eval()函数

      eval()函数虽然在很多情况下能够带来便利,但是要慎用,因为它能够将字符串转化为表达式执行,外部可以利用这个特性执行系统命令,删除、建立文件等操作,造成安全隐患。

      如上述例子2,假设用户输入的不是数学表达式,而是其他指令,可能会造成安全隐患。

    "__import__('os').system(ls /User/)"
  • 相关阅读:
    zoj 3593 One Person Game
    poj 2115 C Looooops
    hdu 1576 A/B
    hdu 2669 Romantic
    poj1006 Biorhythms
    中国剩余定理(孙子定理)
    Pseudoprime numbers---费马小定理
    青蛙的约会----POJ1061
    [POJ2942]:Knights of the Round Table(塔尖+二分图染色法)
    [BZOJ1718]:[Usaco2006 Jan] Redundant Paths 分离的路径(塔尖)
  • 原文地址:https://www.cnblogs.com/pjsdly-NLP/p/12688841.html
Copyright © 2011-2022 走看看