本文共 1287 字,大约阅读时间需要 4 分钟。
Lambda表达式和匿名函数
Lambda表达式可以用来声明匿名函数。Lambda函数是一种简单的、在同一行中定义函数的方法。Lamda函数实际生成了一个函数对象
Lambda表达式只运行包含一个表达式。不包含复杂语句,该表达式的计算结果就是函数的返回值
语句:lambda arg1,a,rg2,arg3…:<表达式>
Arg1/arg2/arg3为函数的参数。<表达式>相当于函数体。运算结果是:表达式的运算结果
#测试lambda函数 f=lambda a,b,c:a+b+c #匿名函数,默认return返回print(f)print(f(1,2,3))def test01(a,b,c): print("*"*3) return a+b+cprint((test01(2,3,4))) g = [lambda a:a*2,lambda b:b*3]print(g[0](6)) h = [test01,test01,test01] #函数也是对象print(h[0](5,6,7))
|
Eval函数
功能:将字符串str当成有效的表达式来求值并返回计算结果
语法:eval(source[,globals[,locals]])->value
参数:source:一个Python表达式或函数compile()返回的代码对象
Global:可选。必须是dictionary
Local:可选。任意映射对象
#测试eval函数 s = "print('abcd')"eval(s) #用于打印字符串a=10b=20c=eval("a+b") #用于计算数值print(c) dict1 = dict(a=100,b=200) d=eval("a+b",dict1) #取字典对象中的a,b
|
递归函数
自己调用自己的函数,在函数体内直接或间接的自己调用自己
每个递归函数必须包含两个条件:
#测试递归函数的基本原理 def test01(): print("test01") test02()def test02(): print("test02") test01()def test03(): print("test03")#该方法无限制的开启栈帧stack frame,直到栈空间满了,程序崩溃;后进先出 test03() print("###") #信息不打印,上一步方法未执行完test03() #执行报错,Process finished with exit code 1,退出码1,无限制的调用,正常情况是0
|
结束条件
#测试递归函数的基本原理 def test01(n): print("test01",n) if n==0: print("over") else: test01(n-1) print("test01***",n)def test02(): print("test02") test01(4)
|
使用递归计算阶乘
转载地址:http://tmapi.baihongyu.com/