lambda表达式可以用来声明匿名函数。lambda函数是一种简单的,在同一行中定义函数的方法。
lambda函数实际生成了一个函数对象
lambda表达式只容许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。
lambda表达式:lambda arg1,arg2,arg3…
# lambda表达式使用 f1 = lambda a, b, c, d: a * b * c * d def tast01(a, b, c, d): print("########") return a * b * c * d print(f1(2, 3, 4, 6)) #输出:144 g = [lambda a: a * 2, lambda b: b * 3] print(g[0](6)) #输出:12 print(g[0](2),g[1](3)) #输出:4 9 f2 = [tast01, tast01] #函数也是对象 print(f2[0](2, 3, 4, 6),f2[1](1,3,2,2)) #输出:144 12
将字符串str当成有效的表达式来求值并返回计算结果
语法:eval(source[,globals[,locals]])–>value
source:一个Python表达式或函数compile()返回的代码对象
globals:可选,必须是dictionary
locals:可选。任意映射对象
s = "print('abcdf')" eval(s) #输出:abcdf a = 10 b = 20 c = eval("a+b") print(c) #输出:30 dict1 = dict(a=100, b=200) d = eval("a+b") print(d) #输出:30 f = eval("a+b", dict1) print(f) #输出:300
递归函数指的是:
自己调用自己的函数,在函数内部直接或间接的自己调用自己。递归类似于大家中学数学学习过的“数学归纳法”。
每个递归函数必须包含两部分:
(1)终止条件:表示递归什么时候结束。一般用于返回值,不再调用自己。
(2)递归步骤 :把第n步的值和第n-1步相关联。
def tast01(n): print("tast01:",n) # tast02() #在tast01中掉tast02 if n==0: print("over") else: tast01(n-1) print("tast01***",n) #def tast02(): # print("tast02") tast01(4) #输出: tast01: 4 tast01: 3 tast01: 2 tast01: 1 tast01: 0 over tast01*** 0 tast01*** 1 tast01*** 2 tast01*** 3 tast01*** 4
def factorial(n): if n == 1: return 1 else: return n * factorial(n - 1) result = factorial(5) print(result) #输出:120