1.闭包
闭包就是一个函数中在嵌套一个函数,并嵌套的这个函数引用外部变量,那么这被嵌套的函数就是一个闭包。示例:
def entry(name):
def inner():
return f'my name is {name}'
return inner
output = entry("李四")()
print(output)
-------------------------输出-------------------------
my name is 李四
在这个entry函数里边嵌套了一个函数inner,然后return 这个函数,那么entry("李四")的返回值就是一个可调用的对象,就可以写成:entry("李四")(),
同时被嵌套的函数也可以接受参数, 像这样调用:entry("李四")(20)
def entry(name):
def inner(age):
return f'my name is {name}, age: {age}'
return inner
output = entry("李四")(20)
print(output)
-------------------------输出-------------------------
my name is 李四, age: 20
2.使用函数实现装饰器
python的装饰器其实也就是闭包的一种应用,它的返回值也是一个扩展了功能的函数。我先来看一下使用函数实现的装饰器。
在下面的例子中:这个“timer”就是一个装饰器,它的作用打印函数的执行消耗时间。它接受一个函数,并返回一个函数wrapper。
import time
def timer(func):
def wrapper(*args, **kwarg):
start = time.time()
ret = func(*args, **kwarg)
print(f'函数: {func.__name__}, 耗时:{time.time() - start}')
retur