python中闭包的应用场景和使用闭包的原因
作者:互联网
一、闭包的应用场景
1. 当做计算器使用
2. 统计函数的被调用次数
3. 当做装饰器使用
二、应用场景代码
def calculate():
"""当做计算器使用"""
num = 0
def add(value):
nonlocal num # 内嵌作用域需要使用nonlocal关键字
num += value
return num
return add
add1 = calculate()
print(add1(5))
print(add1(10))
print(add1(15))
add2 = calculate()
print(add2(3))
print(add2(13))
print(add2(16))
print(add1(70))
def counter(func):
"""统计函数的被调用次数"""
count = 0
def closure(*args, **kwargs):
nonlocal count
count += 1
print(f"{func.__name__}被调用了{count}次了")
return func(*args, **kwargs)
return closure
def add(a, b):
print(f"SUM: {a + b}")
def say_hello():
print("hello")
counter_add = counter(add)
say_hello = counter(say_hello)
counter_add(11, 22)
say_hello()
counter_add(33, 22)
say_hello()
say_hello()
say_hello()
counter_add(33, 22)
def decorator(fn):
"""当做装饰器使用"""
symbol = '$'
def closure(*args, **kwargs):
return symbol + str(fn(*args, **kwargs))
return closure
@decorator
def add_symbol(number):
return number
print(add_symbol(200))
print(add_symbol(3000))
print(add_symbol(80000))
二、为什么要使用闭包?
1. 在 Python 中使用闭包的最重要的一点是它们提供某种数据隐藏作为回调函数。这反过来又减少了全局变量的使用。
2. 在某些情况下,使用闭包而不是类可以减少代码大小,节省内存空间。
3. 闭包非常适合替换硬编码常量。
4. 闭包在装饰函数中非常有用。我们在下面的例子中可以看到
参考链接:https://www.codesansar.com/python-programming/closures-applications.htm
标签:闭包,return,python,中闭,add,print,hello,def 来源: https://blog.csdn.net/weixin_42289273/article/details/120115930