在python中将字符串转换为变量?

时间:2017-07-30 05:52:16

标签: python

我对python和编程非常陌生,并且一直试图弄清楚如何做到这一点。

这是我需要帮助的地方:

y=0
x=2
p01='hello'
p02='bye'

print('p'+(str(y)+str(x)))

输出当然是' p02',但是如何输出而不是p02的值(' bye')

希望这是有道理的,我期待任何答案。

1 个答案:

答案 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看起来是最好的选择,那么 糟糕 就是 糟糕