zoukankan      html  css  js  c++  java
  • (一)Python入门-5函数:07lambda表达式和匿名函数-eval()函数

    一:lambda表达式和匿名函数

      lambda表达式可以用来声明匿名函数。lambda 函数是一种简单的、在同一行中定义函数 的方法。lambda函数实际生成了一个函数对象。

      lambda表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数 的返回值。

      lambda表达式的基本语法如下:

        lambda arg1,arg2,arg3... : <表达式>

        arg1/arg2/arg3为函数的参数。<表达式>相当于函数体。运算结果是:表达式的运算结果。

    #lambda表达式测试,lambda创建匿名函数
    
    f = lambda a,b,c,d:a+b+c+d
    def f1(a,b,c,d):     #此函数同lambda表达式f
        return a+b+c+d
    
    g = [lambda a:a*2,lambda b:b*3,lambda c:c*4]
    h = [f1,f1,f1]     #函数也是对象,此方式类似lambda表达式g
    
    print(f(1,2,3,4))
    print(f1(1,2,3,4))
    
    print(g[0](1),g[1](2),g[2](3))
    print(h[0](1,2,3,4),h[1](1,2,3,4))

    运行结果:

      10
      10
      2 6 12
      10 10

    二:eval()函数

      功能:将字符串str当成有效的表达式来求值并返回计算结果。
      语法: eval(source[, globals[, locals]]) -> value
      参数:

        source:一个 Python表达式或函数 compile()返回的代码对象

        globals:可选。必须是dictionary

        locals:可选。任意映射对象

      eval 函数会将字符串当做语句来执行,因此会被注入安全隐患。比如:字符串中含有删除文 件的语句。那就麻烦大了。因此,使用时要慎重!!!

    #测试eval()函数
    
    s = "print('abcdefg')"
    eval(s)
    
    a,b = 10,20
    c = eval("a+b")
    print(c)
    eval("print(c)")
    
    dict1 = dict(a=100,b=200)
    d = eval("a+b",dict1)   #声明此时调用的a+b中的a,b是dict中的a,b
    print(d)

    运行结果:

      abcdefg
      30
      30
      300

  • 相关阅读:
    HDU
    HDU
    POJ
    HDU
    HDU
    POJ
    HDU
    FZU
    LightOJ 1030 Discovering Gold 数学期望计算
    POJ 3061 Subsequence 二分查找
  • 原文地址:https://www.cnblogs.com/jack-zh/p/10840753.html
Copyright © 2011-2022 走看看