# 装饰器不带参数
def func01(fun):
def fun02():
print(1)
fun()
print(3)
return fun02
@func01
def f():
print(2)
f()
######################
# 装饰器带参数
def func01(fun):
def fun02(value):
print(1)
fun(value)
print(3)
return fun02
@func01
def f(value):
print(value)
f(2)
######################
# 装饰器带参数和返回值
def func01(fun):
def fun02(value):
print(1)
ret_value = fun(value)
print(3)
return ret_value
return fun02
@func01
def f(value):
print(value)
return '返回值'
print(f(2))
################################################################
# 调用f() 相当于调用f为参数的func01()
# 相当于 调用func01() 传入f() 返回值是fun02
# fun02被执行 执行的fun(value)是被传入的f
# ret_value 接收f()的返回值
def func01(fun):
def fun02():
print(1)
fun()
print(3)
return fun02
def f():
print(2)
# @func01 装饰器相当于这样一行代码
f = func01(f)
f()
##############################################################
# 调用f() 相当于调用f为参数的func01()
# 相当于 调用func01() 传入f() 返回值是fun02
# fun02被执行 执行的fun(value)是被传入的f
# ret_value 接收f()的返回值
def func01(fun):
def fun02(value):
print(1)
ret_value = fun(value)
print(3)
return ret_value
return fun02
@func01
def f(value):
print(value)
return '返回值'
print(f(2))
python 装饰器
最新推荐文章于 2025-04-24 19:54:05 发布