为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建可变数量的变量?

如何创建可变数量的变量?

繁华开满天机 2019-05-20 16:22:18
如何在Python中完成变量变量?这是一个精心设计的手动条目,例如:变量变量我听说这是一个坏主意,但它是Python中的一个安全漏洞。真的吗?
查看完整描述

6 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

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

>>> 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 0l.append('potatoes') 
 # l is now ['foo', 'bar', 'baz', 'potatoes']

对于有序序列,列表比整数键类型的字典更方便,因为列表支持迭代的索引顺序,切片append和其他操作,将需要尴尬密钥管理与字典。


查看完整回答
反对 回复 2019-05-20
?
慕的地10843

TA贡献1785条经验 获得超8个赞

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

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


查看完整回答
反对 回复 2019-05-20
?
慕斯709654

TA贡献1840条经验 获得超5个赞

每当你想使用变量变量时,最好使用字典。所以不要写作

$foo = "bar"$$foo = "baz"

你写

mydict = {}foo = "bar"mydict[foo] = "baz"

这样您就不会意外地覆盖以前存在的变量(这是安全方面),并且您可以拥有不同的“命名空间”。


查看完整回答
反对 回复 2019-05-20
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞


您也可以使用namedtuple集合模块代替字典,这样可以更轻松地访问。

例如:

# using dictionary

variables = {}

variables["first"] = 34

variables["second"] = 45

print(variables["first"], variables["second"])


# using namedtuple

Variables = namedtuple('Variables', ['first', 'second'])

vars = Variables(34, 45)

print(vars.first, vars.second)


查看完整回答
反对 回复 2019-05-20
  • 6 回答
  • 0 关注
  • 1063 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信