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

13 Python学习之匿名函数和闭包

程序员文章站 2024-02-19 14:07:34
...

匿名函数

匿名函数又叫一句话函数,比较简单

语法:

lambda 参数: 返回值

例1:

ret = lambda a, b: a + b			# a, b是参数, a + b 是要返回的值
print(ret(1, 2))

3

例2:

ret = lambda a, b: a if a > b else b
print(ret(3, 5))

5

闭包

闭包的概念:

  1. 闭包只会出现在嵌套函数中

  2. 内层函数对外层函数非全局变量的引用(使用),就会形成闭包。被引用的非全局变量称为*变量,这个*变量会与内层函数产生一个绑定关系,当外层函数调用结束后,*变量不会消失。

闭包的作用:

保证数据安全

例1:

# 嵌套函数
def make_average():
    li = []         # 局部变量li
    def average(new_value):
        li.append(new_value)        # 内存函数调用外层函数非全局变量li
        print("列表li的内容是:", li)
        return sum(li)/len(li)
    return average

ret = make_average()
print(ret(10000))
print(ret(11000))
print(ret(12000))
print(ret(9000))
print(ret.__code__.co_freevars)     # 判断一个函数是不是闭包,查看*变量即可

运行结果是:

列表li的内容是: [10000]
10000.0
列表li的内容是: [10000, 11000]
10500.0
列表li的内容是: [10000, 11000, 12000]
11000.0
列表li的内容是: [10000, 11000, 12000, 9000]
10500.0
(‘li’,) # *变量