1、闭包:是一个函数和它所引用的环境组合的一个整体,保证数据不被外界所影响。
闭包有一个外部函数和一个内部函数,返回值必须是 内嵌函数。
若想在内嵌函数中改变外部变量,可以使用关键字nonlocal;
缺点:会导致一部分内存不被释放,占用内存。
def outer_function(x):
def inner_function(y):
return x * y
return inner_function
# 创建一个闭包实例
my_closure = outer_function(5)
# 调用闭包
result = my_closure(7)
print(result) # 输出: 35
def outer_function(x):
def inner_function(y):
nonlocal x
x=x+y;
return x * y
return inner_function
# 创建一个闭包实例
my_closure = outer_function(5)
# 调用闭包
result1 = my_closure(7)# 这里的时候,x已经在第一次执行后被改变;
result2= my_closure(7)
print(result1) # 输出: 84
print(result2) # 输出: 133
2、装饰器
在不改变原代码的情况下,增加功能。
例如:
def outer_function(add):
def inner_function():
print("加法计算:")
add()
print("*************")
return inner_function
@outer_function
def add():
x=3+4
print("3和4相加的结果:"+str(x))
add()