在我想要定义的模块中说:
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)
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |