【发布时间】:2020-06-29 12:35:14
【问题描述】:
我正在学习 Python,并且擅长装饰器。
我试图理解为什么会使用它们。
如果我编写一个非常简单的装饰器,
def new_func(inserted_func):
def wrap_func():
print("Start")
inserted_func()
print("End")
return wrap_func
@new_func
def existing_func():
print("Middle")
existing_func()
它会回来的,
Start
Middle
End
但我也可以通过编码实现同样的目标,
def func1():
print("Start")
def func2():
print("Middle")
def func3():
print("End")
func1()
func2()
func3()
现在我很欣赏我的装饰器功能非常简单,但是除了“因为你可以”之外,选择装饰器而不是多个功能的原因是什么?
【问题讨论】:
-
没什么...对于您提供的非常有限的情况。以下是为您准备的一些任务: 1. 为 Python 代码库中的每个函数添加参数记录和返回值 2. 为代码库中的每个纯函数添加记忆 3. 为代码库中的每个函数添加性能计时。现在,您是要手动编辑代码库中的每个函数,还是要编写几个装饰器?
-
为了简单和可重用性。我们也使用函数的确切原因。想象一下,每次开始一个新项目时,您都必须编写 staticmethod 装饰器!
-
好吧,假设您需要多次调用该包装函数。您是否愿意以每次一个的价格输入三个调用?