Python 全局变量的列表赋值
请看下面的代码:Python 全局变量的列表赋值,python,Python,请看下面的代码: def x(): a.append(1) def y(): print a a = [] x() y() 哪些产出: [1] 这是: def x(): a = [1] def y(): print a a = [] x() y() 哪些产出: [] 我不明白为什么我不能在函数中显式设置全局列表变量a,而不使用列表方法,如.append(),而只是设置值?第二个示例不是全局变量。在第二个示例中,a=[1]正在创建一个名为a的新局部变量,
def x():
a.append(1)
def y():
print a
a = []
x()
y()
哪些产出:
[1]
这是:
def x():
a = [1]
def y():
print a
a = []
x()
y()
哪些产出:
[]
我不明白为什么我不能在函数中显式设置全局列表变量
a
,而不使用列表方法,如.append()
,而只是设置值?第二个示例不是全局变量。在第二个示例中,a=[1]
正在创建一个名为a
的新局部变量,而不是引用全局变量a
。要引用外部作用域a
,可以执行以下操作:
def x():
global a
a = [1]
def x():
global a
a = [1]
有关详细信息,请参阅Python文档,具体如下:
如果没有全局变量,就不可能分配给全局变量,
尽管自由变量可以引用全局变量,但不需要声明
全球
在第一个示例中,
a
使用全局变量,因为您引用的变量在x()
函数中不作为局部变量存在,但在全局变量中确实存在。在版本1中,当您在x
中使用a
和y
中使用a
时,并在外部范围内找到它
在版本2中,您在x
内部定义了一个本地a
,并将其赋值;Python不需要查看其他范围。如果你想使用“外部a
”,你必须明确你的意图: