码迷,mamicode.com
首页 > 编程语言 > 详细

(一)Python入门-5函数:07lambda表达式和匿名函数-eval()函数

时间:2019-05-12 01:53:24      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:功能   匿名函数   简单   cti   eval   dict   com   生成   参数   

一: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

(一)Python入门-5函数:07lambda表达式和匿名函数-eval()函数

标签:功能   匿名函数   简单   cti   eval   dict   com   生成   参数   

原文地址:https://www.cnblogs.com/jack-zh/p/10840753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!