有没有办法从字符串创建全局变量?我知道你可以像这样从字符串中创建一个变量:
string = 'hello'
val = 10
vars()[string] = val
因此使 hello 变量等于 10。我不知道如何使该用户输入变量成为全局变量,但这不起作用:
string = 'hello'
val = 10
vars()[string] = val
eval("global " + string)
有没有办法从字符串创建全局变量?我知道你可以像这样从字符串中创建一个变量:
string = 'hello'
val = 10
vars()[string] = val
因此使 hello 变量等于 10。我不知道如何使该用户输入变量成为全局变量,但这不起作用:
string = 'hello'
val = 10
vars()[string] = val
eval("global " + string)
您可以使用以下globals()
功能:
name = "hello"
globals()[name] = 10
从模块设置全局变量:
我尝试了类似的尝试来简化我的 argparse 版本,这样它就允许名称的最小重复,支持不区分大小写的多个字符标志,但仍然使用混合大小写标志设置全局变量。我能想出的唯一解决方案是返回一个我可以执行的语句列表。我在模块内执行的尝试没有成功。我的例子:
def main():
print "Some tests with provided args"
One = 1
Two = 2
Three = 3
prs = ArgumentParserCI(description='process cmdline args')
prs.add_argument('One')
prs.add_argument('Three')
cmdlineargs = ['-one', 'one', '--thr', "III"]
argsdict, unknownargs, execlist = prs.parse_args(cmdlineargs)
exec(execlist)
print("cmdlineargs:", cmdlineargs)
print (One, Two, Three)
if __name__ == "__main__":
main()
打印:
Some tests with provided args
('cmdlineargs:', ['-one', 'one', '--thr', 'III'])
('one', 2, 'III')