globals()绑定到声明它的模块,而不是使用它的模块

时间:2018-11-14 15:50:23

标签: python

我正在使用一个加载框架的测试框架,然后在该模块的范围内搜索经过@test()装饰的函数。我想做的是通过动态创建那些标记变量来动态创建那些测试。

它看起来像这样:

for i in range(100):
    globals()[f"Test_{i}"] = test()(Test)

为方便起见,我将其包装成可重用的函数并将其粘贴在另一个模块中:

def add_test(t, n=1):
    for i in range(n):
        globals()[f"{t.__name__}_{i}"] = test()(t)

但是,当我在测试模块中导入add_test()函数并进行调用时,没有新变量添加到测试模块的全局范围中。如果我将此功能移到使用它的模块中,它将起作用。似乎globals()绑定到模块范围,而不是真正的全局范围。这种分析正确吗?我该如何解决?

0 个答案:

没有答案