python的全局列表变量

大家知道在python中,对一个非列表、字典的变量,对与全局变量同名的局部变量进行修改,不会影响全局变量。如果局部变量以全局变量进行赋值,就更加不会出现“修改了局部影响到全局”

A = "a"
def test():
      B = A
      B = "b"
      print B
      print A
print A

但是,如果这个变量是全局 列表,字典,元组,就有点复杂了

HEADER =["A","B"]
print HEADER[0],
def test():
    t_h = HEADER
    t_h[0] = "C"
    print t_h[0],HEADER[0],
test()
print HEADER[0]

结果是 A C C C
1、在局部,不需要用global进行显式指明是全局变量
2、=不是一个赋值,而更像是指针指向这个全局变量

而下面这样

HEADER =["A","B"]
print HEADER[0],
def test():
    t_h = HEADER
    t_h = ["C","B"]
    print t_h[0],HEADER[0],
test()
print HEADER[0]