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