2024-06-09 04:07:28 发布
网友
如何在Python中实现变量?
这里有一个详细的手动输入,例如:Variable variables
不过,我听说这通常是个坏主意,而且这是Python中的一个安全漏洞。是真的吗?
这不是个好主意。如果要访问全局变量,可以使用^{}。
>>> a = 10 >>> globals()['a'] 10
如果要访问本地作用域中的变量,可以使用^{},但不能将值赋给返回的dict
更好的解决方案是使用getattr或将变量存储在字典中,然后按名称访问它们。
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更方便,因为列表支持按索引顺序进行迭代,slicing,append,以及其他需要用dict进行笨拙的密钥管理的操作
append
这不是个好主意。如果要访问全局变量,可以使用^{} 。
如果要访问本地作用域中的变量,可以使用^{} ,但不能将值赋给返回的dict
更好的解决方案是使用
getattr
或将变量存储在字典中,然后按名称访问它们。使用内置的^{} 函数按名称获取对象的属性。根据需要修改名称。
您可以使用dictionaries来完成此任务。字典是键和值的存储。
您可以使用变量密钥名来实现变量的效果,而不存在安全风险。
如果你想做类似的事情
列表可能比dict更合适。列表表示对象的有序序列,具有整数索引:
对于有序序列,列表比带整数键的dict更方便,因为列表支持按索引顺序进行迭代,slicing,
append
,以及其他需要用dict进行笨拙的密钥管理的操作相关问题 更多 >
编程相关推荐