欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python函数作用域和匿名函数以及闭包、回调、递归的使用

程序员文章站 2024-02-24 14:34:58
...
# 函数的作用域

# 全局变量不会去拿局部变量的东西
# 局部变量有的东西就拿自己的,没有就拿全局变量的
# global  可以改变全局变量的值
a = 8         # 全局变量
c = 6
def f():      # 局部变量
    global a  # global:当局部的需要改变全局的就用
    b = 5
    a = a+1   # 强行要改变全局变量的东西,报错
    print(a) # 输出 9
    def f2():
        nonlocal b  # nonlocal:当局部的使用局部的就用
        b = b+1
        print(b)  # 输出 6
    f2()
f()
print(a)      # 输出 9


# 匿名函数
li = [1,23,4,12,42,2]
print(list(filter(lambda o:o>10,li)))


# 闭包:外层函数返回内层函数名称为闭包
 现在需要在全局来调用f2函数
def f():
    print('这里是f函数')
    def f2():
        print('这里是f2函数')
    return f2  # f2 函数名
l=f()
l()
 函数什么时候执行: 函数名加括号
 return 返回的是什么l就是什么


# 递归:函数自己调用自己
def f():
    print('这里是f函数')
    f()
f()


 n:return 5*4*3*2*1 ===l
 f(4)  f(3) f(2)  f(1)
def f(n):
    if n == 1:
        return 1
    return f(n-1)*n
l = f(5)
print(l)




# 回调:
 把一个函数当做是参数传给另一个函数
 目的:想让这个f2函数给f去操作

def f(o,i):  #  o==>f2函数名
    o()  # 调用f2函数
def f2():
    print('这里是f2函数')

f(f2,1)   # f2 ===> f2 函数名

上一篇: Python Day5

下一篇: