连接字符串变量名称赋值

时间:2017-07-01 11:56:09

标签: python

我是一个python noob,我想为一个名为wgich的变量赋值。我尝试搜索并进行反复试验。这是我的一次尝试。

b = 'sometext'
(b + "a") = somevalue

2 个答案:

答案 0 :(得分:1)

dict(字典)的内置类型处理动态键(名称)。它也在内部用于所有类型的东西,比如所有的变量和属性,所以你也应该尝试一下:

b = {}  # creates a dictionary
b['a'] = 1 # puts the key 'a' with value 1 into the dictionary
print(b['a'])   # prints the value of 'a' (1)

您还可以动态构建密钥:

b['a' + '1'] = 1

将创建一个密钥b [' a1']。

查看https://docs.python.org/3/library/stdtypes.html#mapping-types-dict的更多功能。

答案 1 :(得分:0)

非推荐方法#1

使用globals()

>>> b = 'sometext'
>>> globals()[b + 'a'] = 123
>>> sometexta
123

globals()函数返回全局命名空间中可用的所有变量的字典。如果您希望在函数内部执行相同的操作,则可以使用locals()执行相同的操作。

请注意,如果您不知道它们在运行时可能具有哪些名称,则无法访问这些变量。

非推荐方法#2

您可以使用exec内置功能:

>>> b = 'sometext'
>>> exec("%sa = 123" %b)
>>> sometexta
123

如果要访问此变量,则需要再次使用exec,因为您正在使用变量命名变量。

exec及其姐妹函数eval将执行传递给它的任何有效python代码。请记住永远不要让任何用户输入被他们执行,因为它会造成严重的安全威胁。

推荐方法

使用dict存储“变量”名称变量。只有在知道自己在做什么时才使用前两种方法。在所有其他情况下,字典是最安全的路线:

>>> b = 'sometext'
>>> variables = {}
>>> variables[b + 'a'] = 123
>>> variables[b + 'a']
123
>>> variables['sometexta'] # is the same thing as the above
123

使用前两种方法,创建变量非常简单。但是如果你不知道它们是如何创建的,那么在运行时访问它们可能会很痛苦。