我有两个关于全局变量的问题:
- 为什么我不能像这样将列表声明为全局变量:
global list_ex = []
? 我已经定义了一个我想在函数中使用的全局变量,但不能:
global column def fx_foo(cols): common = set(cols).intersection(set(column)) #Error Here!!
当我尝试访问函数内的列时,出现错误:
NameError: global name 'column' is not defined
最佳答案
您没有正确使用 global
。您根本不需要使用它。
您实际上需要设置一个全局列
变量,现在没有。 global
不会使变量可用。只需先创建一个全局列
:
column = []
然后在你的函数中引用它。这就是 NameError
异常试图告诉您的; Python 找不到全局 column
变量,您没有为该名称分配任何内容,因此它不存在。
如果您想分配到函数中的全局列
,则只需要使用global
:
def somefunction():
global column
column = [1, 2, 3]
这里需要 global
关键字来区分 column
和函数中的 local 变量。
比较:
>>> foo = 1
>>> def set_foo():
... foo = 2
...
>>> set_foo()
>>> foo
1
到
>>> foo = 1
>>> def set_foo():
... global foo
... foo = 2
...
>>> set_foo()
>>> foo
2
第一种形式只设置局部变量,第二种形式设置全局变量。
关于python - 声明全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986887/