我对 python 和编程都很陌生,并且已经尝试弄清楚如何做到这一点有一段时间了。
这是我需要帮助的内容:
y=0
x=2
p01='hello'
p02='bye'
print('p'+(str(y)+str(x)))
输出当然是'p02',但是我怎样才能使输出代替p02的值('bye')
希望这是有道理的,我期待任何答案。
你可以使用eval()
...
它计算存储在字符串中的表达式,就好像它是 Python 代码一样。
就你而言,'p'+(str(y)+str(x))
变成'p01'
,因此得到表达式的结果p01
,这当然是'bye'
.
print(eval('p'+(str(y)+str(x))))
但请注意,您永远不应该这样做 - 几乎总是有更好的方法。请阅读为什么使用“eval”是一种不好的做法? https://stackoverflow.com/questions/1832940/why-is-using-eval-a-bad-practice
所以,我们能做些什么?
globals()
为我们提供了 Python 程序中所有全局变量的字典,其名称为字符串索引以及它们作为字典值的值。因此,我们可以简单地这样做:
globals()['p'+(str(y)+str(x))]
其评估结果为globals()['p01']
,得到全局值p01
- 这是bye
.
再说一遍,这是解决更大问题的方法
重构你的代码。将它们放入数组或字典中并获取其索引。想清楚为什么要这样做,然后更改代码,这样就不必这样做。这是bad处于 eval 看起来是最佳选择的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)