从字符串中提取变量名在Python中

0 投票
3 回答
541 浏览
提问于 2025-04-18 05:25

我想在Python中做类似这样的事情:

a_string = 'variable_name'
print('{0}'.format(variable_name))

也就是说,我想从一个字符串中提取出变量的名字,然后把它放进.format()里。请问我该怎么做呢?

3 个回答

1

你可以这样做:

a_string = 'variable_name'
print('{0}'.format(globals()[a_string]))

示例

variable_name = 'hello'

a_string = 'variable_name'
>>> print('{0}'.format(globals()[a_string]))
hello
3

通常的方法是使用 str.format 的字典形式。

>>> variable_name = 'hello'
>>> print('{variable_name}'.format(**vars()))
hello
4

一般来说,这种做法并不好——数据应该是数据,代码应该是代码。当然,这条规则也有例外。

如果你想要实现你的目标,可以简单地访问通过调用 vars 返回的字典:

a_string = 'variable_name'
print('{0}'.format(vars()[variable_name]))

vars 用来检查在当前环境中变量是否可用(和调用 locals() 是一样的)。

回到好的编程习惯:如果你需要用字符串来查找程序中的数据,建议你考虑是否可以使用字典,而不是直接把这些动态名称的数据放在变量里。字典的一个主要用途就是允许动态查找数据。

撰写回答