2024-09-26 22:49:48 发布
网友
我是一个python noob,我想给一个名为wgich is concatenated的变量赋值。我试着搜索,试着出错。这是我的一个尝试
b = 'sometext' (b + "a") = somevalue
使用globals()
globals()
>>> b = 'sometext' >>> globals()[b + 'a'] = 123 >>> sometexta 123
globals()函数返回全局命名空间中所有可用变量的字典。如果希望在函数中执行相同的操作,可以使用locals()执行相同的操作
locals()
请注意,如果您不知道这些变量在运行时可能有什么名称,那么甚至无法访问它们
您可以使用^{}内置函数:
>>> b = 'sometext' >>> exec("%sa = 123" %b) >>> sometexta 123
如果您想访问这个变量,您需要再次使用exec,因为您使用的是名为variables的变量
exec
exec及其姊妹函数eval将执行传递给它的任何有效python代码。请记住,永远不要让任何用户输入由他们执行,因为这将构成严重的安全威胁
eval
使用dict存储“变量”名称变量。只有当你知道你在做什么的时候才使用前两种方法。在所有其他情况下,字典是最安全的途径:
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
非推荐方法#1
使用
globals()
globals()
函数返回全局命名空间中所有可用变量的字典。如果希望在函数中执行相同的操作,可以使用locals()
执行相同的操作请注意,如果您不知道这些变量在运行时可能有什么名称,那么甚至无法访问它们
非推荐方法#2
您可以使用^{} 内置函数:
如果您想访问这个变量,您需要再次使用
exec
,因为您使用的是名为variables的变量exec
及其姊妹函数eval
将执行传递给它的任何有效python代码。请记住,永远不要让任何用户输入由他们执行,因为这将构成严重的安全威胁推荐的方法
使用
dict
存储“变量”名称变量。只有当你知道你在做什么的时候才使用前两种方法。在所有其他情况下,字典是最安全的途径:使用前两种方法,创建变量非常简单。但是,如果不知道它们是如何创建的,那么在运行时访问它们可能是一件痛苦的事情
有一个
dict
(字典)的内置类型,它处理动态键(名称)。它也在内部用于所有类型的东西,比如所有的变量和属性,所以您也应该尝试一下:您还可以动态生成密钥:
将创建一个键b['a1']
更多功能请参见https://docs.python.org/3/library/stdtypes.html#mapping-types-dict
相关问题 更多 >
编程相关推荐