gpt4 book ai didi

python - 为什么装饰器函数不更简单?

转载 作者:行者123 更新时间:2023-11-28 22:28:13 26 4
gpt4 key购买 nike

为什么装饰器函数需要定义它自己的函数而不是仅仅运行代码...所以不是这样的:

def decor(func):
def wrap():
print("============")
func()
print("============")
return wrap

def print_text():
print("Hello world!")

decorated = decor(print_text)
decorated()

为什么不这样:

def decor(func):
print("============")
func()
print("============")

def print_text():
print("Hello world!")

decorated = decor(print_text)
decorated

最佳答案

装饰器语法的目的是将函数应用于可调用对象,并生成另一个可调用对象。在你的第二个例子中,你并没有真正的装饰器;您只是将函数引用传递给另一个调用它的函数。

换句话说,与装饰器语法一起使用的函数意图的定义特征是它返回另一个函数。装饰器语法没有什么特别之处;它是语法糖,它不会做任何您用常规 Python 语法无法完成的事情。以下

@foo
def bar(...):
...

完全等同于更明确的形式,但更简洁

def bar(...):
...

bar = foo(bar)

关于python - 为什么装饰器函数不更简单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43670709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com