【发布时间】:2021-10-05 13:55:45
【问题描述】:
我正在尝试在一个类方法中构建一个控制结构,该方法将函数作为输入,并且如果函数被修饰,则具有不同的行为。关于如何构建函数is_decorated 的任何想法,其行为如下:
def dec(fun):
# do decoration
def func(data):
# do stuff
@dec
def func2(data):
# do other stuff
def is_decorated(func):
# return True if func has decorator, otherwise False
is_decorated(func) # False
is_decorated(func2) # True
【问题讨论】:
-
装饰器只是包装函数的语法糖。
-
@Barmar 好的,然后可能会改写为“您如何编写一个
is_decorated函数来检测函数是否具有包装函数?” -
这似乎是一个 XY 问题。为什么需要区别对待装饰函数?
-
你可以检查
func.__closure__是否不是None。包装的函数是一个闭包。 -
所以你只是想检测你的装饰器,而不是所有的装饰器?
标签: python python-3.x closures decorator python-decorators