【发布时间】:2019-11-05 06:58:57
【问题描述】:
我想编写一个装饰器,将多个函数放入模块命名空间。考虑以下模块:
# my_module.py
from scipy import signal
@desired_decorator(new_size=(8, 16, 32))
def resample(x, new_size):
return signal.resample(x, new_size)
我希望现在能够从my_module 导入resample_8、resample_16 和resample_32。我可以编写装饰器并让它返回一个函数列表,但是如何使这些函数在模块命名空间中可用?
【问题讨论】:
-
之后
resample_8,resample_16,resample_32=resample算不算? -
现在装饰器就是这样工作的。看看the source code for
anosql,一个从 SQL 代码动态创建函数的库,以获得灵感。或者看看functools.partial()。 -
(但是为什么你需要一个名为
resample_8()的函数?它怎么比resample(8)更好?IMO 后者看起来更容易使用。很有可能这是一个 XY problem。 )