闭包
def outer():
def inner():
print("123456")
return inner
t = outer()
t()
装饰器
- 不能修改被装饰的函数的源代码
- 不能修改被装饰的函数的调用方式
- 满足1、2的情况下给程序增添功能
def outer(func):
def inner():
print()
func()
return inner
@outer
def login ():
print ("1")
login ()
def outer(func):
def inner(a,b):
func(a,b)
return outer
@outer
def login(a,b):
print(a,b)
login(1,3)
def outer(fun):
def inner():
return fun()
return inner
@outer
def login():
return a
print(login())
def outer(func):
print("开始装饰")
def inner(a):
print("------验证------")
print("------日志------")
return func(a)
return inner
@outer
def test(a):
print("------test登录------",a)
return "登录成功"
print(test("你好"),"---------")
def val(func):
print("开始装饰验证")
def inner():
print("------验证------")
func()
return inner
def log(func):
print("开始装饰日志")
def inner():
func()
print("------日志------")
return inner
@log
@val
def test():
print("------test登录------")
test()
还有挺多不知道怎么写,下次写。