例如,在下面的代码中,我想使用x作为参考来获取列表[1,2,3].
In[1]: pasta=[1,3] In:[2]: pasta Out[2]: [1,3] In [3]: x='pas'+'ta' In [4]: x Out[4]: 'pasta'
解决方法
你想做的是一个糟糕的做法.
你真正需要的是一个dict
:
>>> dct = {'pasta': [1,3]} >>> x = 'pas' + 'ta' >>> dct[x] [1,3]
这是您要实现的实际任务的正确数据结构:使用字符串访问对象.
其他答案建议(或只是表现出令人担忧的)不同的方法来做到这一点.由于Python是一种非常灵活的语言,您几乎可以随时找到这样一种不同的方法来遵循一个给定的任务,但是“应该有一个 – 最好只有一个 – 显而易见的方式来实现”[1].
他们都会做这些工作,但不是没有缺点:
> locals()
可读性较低,不必要地复杂,在某些情况下也可能面临风险(参见Mark Byers答案).如果您使用本地(),您将要将真正的变量与数据库混合使用,那就是凌乱.
> eval()
很简单,是一种“动态地获取一些源代码的快速而又脏的方式”[2]和bad practice.
当对正确的选择方式有疑问时,追踪Zen of Python可能是一个开始.
嘿,即使是InteractiveInterpreter
也可以使用字符串访问对象,但这并不意味着我要去.