【发布时间】:2018-07-18 16:06:38
【问题描述】:
在pkg_resources 模块中你有这个奇怪的功能:
@_call_aside
def _initialize_master_working_set():
# A bunch of ugly code, and then finally:
globals().update(locals())
_call_aside 是这样定义的装饰器,它在定义时调用一次函数(为什么要使用装饰器而不是简单地显式调用函数,我不知道):
def _call_aside(f, *args, **kwargs):
f(*args, **kwargs)
return f
函数_initialize_master_working_set 没有在其他任何地方调用,名称上的下划线表明它不打算供公众重复使用。文档字符串进一步警告不要调用:
此函数...旨在在此模块初始化时调用一次。 不支持其他包调用
我不明白。这不只是在模块范围内执行“一堆丑陋的代码”的一种混淆方式吗?这种模式与直接在全局范围内执行代码有何不同?
【问题讨论】:
-
我的猜测是提供可以多次调用以进行测试的东西。 (看起来测试并没有特别好地利用这个机会,但它就在那里。)
标签: python setuptools pkg-resources