串联字符串变量名赋值

2024-09-26 22:49:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个python noob,我想给一个名为wgich is concatenated的变量赋值。我试着搜索,试着出错。这是我的一个尝试

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

Tags: is赋值noobsometextsomevalueconcatenatedwgich
2条回答

非推荐方法#1

使用globals()

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

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

请注意,如果您不知道这些变量在运行时可能有什么名称,那么甚至无法访问它们


非推荐方法#2

您可以使用^{}内置函数:

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

如果您想访问这个变量,您需要再次使用exec,因为您使用的是名为variables的变量

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

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

有一个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

相关问题 更多 >

    热门问题