如何通过变量名字符串获取对应变量值?Python技术问询
通过变量名字符串获取对应变量值的方法
我明白你的问题啦——你把变量名存在了字符串里,但直接打印这个字符串只会输出变量名文本,而不是它对应的实际值。先回顾下你的代码和输出:
你的代码
yday_mnth = '201905' b = yday_mnth x = 'yday_mnth' print(b) print(x)
输出结果
201905 yday_mnth
这里b直接赋值了yday_mnth的引用,所以能拿到值;但x只是存了变量名的字符串,Python不会自动把它解析成变量引用。下面给你几种解决方法:
方法1:使用globals()全局命名空间字典
globals()会返回当前全局作用域的所有变量组成的字典,键是变量名(字符串),值是变量对应的值。你可以通过字符串键来取值:
yday_mnth = '201905' x = 'yday_mnth' print(globals()[x]) # 输出:201905
方法2:使用locals()局部命名空间字典
如果你的变量是在局部作用域(比如函数内部)定义的,就用locals(),用法和globals()一致:
def get_var_value(): yday_mnth = '201905' x = 'yday_mnth' print(locals()[x]) # 输出:201905 get_var_value()
更推荐的做法:用字典管理变量
虽然上面的方法能解决问题,但直接操作命名空间字典会降低代码可读性,还容易引发意外错误。如果需要通过字符串来索引多个变量,更建议用字典来统一管理:
# 把相关变量存在字典里 date_dict = { 'yday_mnth': '201905', 'another_date': '202401' } x = 'yday_mnth' print(date_dict[x]) # 输出:201905
这种方式逻辑清晰,也符合Python的最佳实践。
内容的提问来源于stack exchange,提问作者Naveen
相关产品推荐
相关产品推荐

