闭包实例
'''手动实现闭包原理'''
def fun(func):
def call_func():
print("正在做安全验证...")
func() # 调用执行函数对象 # 调用login
return call_func
def login():
print("用户正在登录中....")
# 装饰器不改变函数的定义 和调用
# 不能够改变函数的调用, 不利于后期维护
# 程序执行: 如果有等于号, 先执行等于号的右边, 在执行左边
login = fun(login) # func --> login, login --> call_func
login() # login() call_func() 程序执行第5行, func()。本质上指向了第8行def login:执行的代码
# -----------------------下方为闭包/装饰器初级应用------------------------------------------------------------
# 构造闭包函数,作为装饰器执行函数
def set_func(func):
def inner(*args):
func(*args) # --> def one()/ def two()
return inner
@set_func # 等同于 one = set_func(one) one -->inner
def one():
print('this one')
@set_func
def two(arg):
print('this two %s' % arg)
one()
two('老王在隔壁')