我有几个全局变量,我有一个列表。在一个函数中,我正在使用列表并更新如下值,但全局变量似乎没有更新。
a = "hello"
b ="how"
c = "are you"
data = ([a,"abc","xyz"],[b,"pqr","mno"],[c,"test","quest"])
def checklist():
global data , a, b, c
for values in data:
values[0] = values[1]
checklist()
print a + ":" + b + ":"+ c
现在,当我期望更新全局变量时,这并没有发生,我仍然看到旧变量,有人可以解释如何从列表中更新全局变量。
数据中的循环会更改数据的值,这不会更改其他变量。
当你运行 values[0] = values[1]
时,这意味着 values[0] 重新指向另一个对象,但a
将保持不变。
In [52]: a = '12'
In [53]: li = [a, 'b', 'c']
In [54]: id(li[0])
Out[54]: 140264171560632
In [55]: id(a)
Out[55]: 140264171560632
In [56]: li[0] = 'a'
In [57]: li
Out[57]: ['a', 'b', 'c']
In [58]: a
Out[58]: '12'
In [60]: id(li[0])
Out[60]: 140264267728616
In [61]: id(a)
Out[61]: 140264171560632
您打算将数据中的值更改为 for 循环?
没有发生的原因是您正在更改value
,而不是实际数据。
a,b,c = "hello", "how", "are you"
data = ([a,"abc","xyz"],[b,"pqr","mno"],[c,"test","quest"])
def checklist():
global data , a, b, c
for values in data:
values[0] = values[1]
checklist()
print a + ":" + b + ":"+ c
您好:如何:你是吗
print(data)
(['ABC', 'ABC', 'XYZ'], ['PQR', 'PQR', 'MNO'], ['Test', 'Test', 'quest'](
如果你想做这样的事情,你错了,编辑你插入到列表中的变量。
值[0] = 值[1]
设置在值的位置 0 ->值[1]。但是没有修改a-b-c!!