Python 中的一些特殊函数

104 阅读1分钟

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