我对python和编程非常陌生,并且一直试图弄清楚如何做到这一点。
这是我需要帮助的地方:
y=0
x=2
p01='hello'
p02='bye'
print('p'+(str(y)+str(x)))
输出当然是' p02',但是如何输出而不是p02的值(' bye')
希望这是有道理的,我期待任何答案。
答案 0 :(得分:3)
eval()
... 它评估存储在字符串中的表达式,就好像它是Python代码一样。
在您的情况下,'p'+(str(y)+str(x))
变为'p01'
,因此它会获得表达式p01
的结果,当然这是'bye'
。
print(eval('p'+(str(y)+str(x))))
但请注意,你永远不应该这样做 - 几乎总会有更好的方法。请阅读Why is using 'eval' a bad practice?
globals()
为我们提供了Python程序中所有全局变量的字典,其名称为字符串索引,其值为字典值。因此,我们可以简单地做到:
globals()['p'+(str(y)+str(x))]
评估为globals()['p01']
,得到全局p01
的值 - bye
。
重构您的代码。将它们变成数组或字典并获取它的索引。想一想你为什么要这样做,并改变你的代码,这样你就不必这么做了。如果eval看起来是最好的选择,那么 糟糕 就是 糟糕 。