Python:从字符串创建全局变量?

2024-05-17 03:44:34 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法从字符串创建全局变量?我知道你可以用这样的字符串来生成一个变量:

    string = 'hello'
    val = 10
    vars()[string] = val

从而使hello成为一个等于10的变量。我不知道如何将该用户输入变量设置为全局变量,但这不起作用:

    string = 'hello'
    val = 10
    vars()[string] = val
    eval("global " + string)

Tags: 字符串用户hellostringevalvalvarsglobal
2条回答

从模块设置全局变量:
为了简化我的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')

您可以使用globals()函数:

name = "hello"
globals()[name] = 10

相关问题 更多 >