Python-闭包

时间:2021-06-03 01:25:11

介绍

Python的闭包是一种高级的编程技巧,它可以在函数内部定义另一个函数,并返回该函数的引用。这个内部函数可以访问外部函数的变量和参数,即使外部函数已经执行完毕

好处

1)闭包可以避免全局变量的污染,使得代码更加的清晰,易于理解和维护;

2)闭包允许函数以参数形式传递,并且能够记住调用时的参数;

3)使用闭包可以避免使用全局变量,减少命名空间的冲突;

4)闭包可以延长变量的生命周期。

使用场景

  • 保存状态 闭包可以用于保存状态,即使外部函数已经执行完毕
  • 函数工厂 根据不同的参数生成不同的函数

案例

使用闭包来实现一个计数器
def counter(count=0):
    current = 0

    def start():
        # nonlocal 关键字用于在嵌套函数内部使用变量,其中变量不应属于内部函数。
        nonlocal current
        current += count
        return current

    return start


c = counter(5)
print(c())
print(c())
print(c())
c1 = counter(7)

print(c1())
print(c1())
print(c1())
print(c())

输出结果

5
10
15
7
14
21
20
使用闭包实现一个函数工程
def multi(x):
    def inner_func(y):
        return y ** x

    return inner_func


double = multi(2)
triple = multi(3)

print(double(2))
print(double(3))
print(triple(2))
print(triple(3))

上面一个例子中 multi 函数用来创建一个计算指数的工厂,需要一个参数,代表指数值,传入2即计算平方,传入3计算立方

输出结果

4
9
8
27

python中的闭包就介绍到这里,在开发中有以上场景的都可以用到闭包。


欢迎关注,学习不迷路!