如何从该模块中动态向模块添加属性?

Bia*_*cki 3 python

在我想要定义的模块中说:

a = 'a'
b = 'b'
...
z = 'z'
Run Code Online (Sandbox Code Playgroud)

对于某些集合(在这种情况下,我选择了字母).如何在当前模块上动态设置属性?就像是:

for letter in ['a', ..., 'z']:
    setattr(globals(), letter, letter)
Run Code Online (Sandbox Code Playgroud)

这不起作用,但会怎么样?(另外我的理解是模块中的globals()指向该模块属性的字典,但如果这是错误的话,请随时纠正我).

Dav*_*rby 10

globals()返回当前模块的字典,因此您可以像添加任何其他字典一样向其添加项目.尝试:

for letter in ['a', ..., 'z']:
    globals()[letter] = letter
Run Code Online (Sandbox Code Playgroud)

或者消除对globals()的重复调用:

global_dict = globals()
for letter in ['a', ..., 'z']:
    global_dict[letter] = letter
Run Code Online (Sandbox Code Playgroud)

甚至:

globals().update((l,l) for l in ['a', ...,'z'])
Run Code Online (Sandbox Code Playgroud)