Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 全局变量的列表赋值_Python - Fatal编程技术网

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
”,你必须明确你的意图: