我怎么创建变量个数不固定的变量?

2024-06-09 04:07:28 发布

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

如何在Python中实现变量?

这里有一个详细的手动输入,例如:Variable variables

不过,我听说这通常是个坏主意,而且这是Python中的一个安全漏洞。是真的吗?


Tags: 手动variablesvariable安全漏洞坏主意
3条回答

这不是个好主意。如果要访问全局变量,可以使用^{}

>>> a = 10
>>> globals()['a']
10

如果要访问本地作用域中的变量,可以使用^{},但不能将值赋给返回的dict

更好的解决方案是使用getattr或将变量存储在字典中,然后按名称访问它们。

使用内置的^{}函数按名称获取对象的属性。根据需要修改名称。

obj.spam = 'eggs'
name = 'spam'
getattr(obj, name)  # returns 'eggs'

您可以使用dictionaries来完成此任务。字典是键和值的存储。

>>> dct = {'x': 1, 'y': 2, 'z': 3}
>>> dct
{'y': 2, 'x': 1, 'z': 3}
>>> dct["y"]
2

您可以使用变量密钥名来实现变量的效果,而不存在安全风险。

>>> x = "spam"
>>> z = {x: "eggs"}
>>> z["spam"]
'eggs'

如果你想做类似的事情

var1 = 'foo'
var2 = 'bar'
var3 = 'baz'
...

列表可能比dict更合适。列表表示对象的有序序列,具有整数索引:

l = ['foo', 'bar', 'baz']
print(l[1])           # prints bar, because indices start at 0
l.append('potatoes')  # l is now ['foo', 'bar', 'baz', 'potatoes']

对于有序序列,列表比带整数键的dict更方便,因为列表支持按索引顺序进行迭代,slicingappend,以及其他需要用dict进行笨拙的密钥管理的操作

相关问题 更多 >