lambda 用来定义简单的函数对象
f = lambda a,b: a+b
print(f(1,2))
>>>3
g = [lambda a,b: a+b,lambda c,d: c*d]
print(g[0](1,2),g[1](1,2)) /*g是列表,g[0]调取了第一个lambda函数*/
>>>3,2
eval eval() 函数用来执行一个字符串表达式,并返回表达式的值。可以从其他地方引用。
```
eval(expression[, globals[, locals]])
```
eval("表达式",全局名称,局部名称)
递归函数 必须有终止条件,必须有递归步骤
错误写法:
def test01(n):
print(n)
test01(n) /*此时函数会一致执行n直到溢出 */
正确写法:
def test01(n):
print(n)
n += -1 /*递归步骤*/
if n == 0: /*终止条件*/
print("finish")
else:
test01(n) /*此时函数会致执行n==0时结束 */
案例:用递归写阶乘
def factorial(n):
if n == 1: /*终止条件*/
return 1
else:
return n * factorial(n-1) /*递归步骤*/
嵌套函数(内部函数) 函数中嵌套函数
def outer():
print("outer running")
def inner():
print("innner running")
inner() /*外部无法调用内部函数*/
outer()
nonelocal , global 函数调用全局或局部变量声明
a = 100
def outer():
b = 10
def inner():
nonlocal b /*内部函数无法使用外部函数的变量,需要声明,增加 nonlocal */
global a /*内部函数无法使用外部函数的变量,需要声明,增加 global */
print(b)
b = 20
a = 10
inner()
outer