我有两个关于全局变量的问题:
- 为什么我不能像这样将列表声明为全局变量:
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
第一种形式只设置局部变量,第二种形式设置全局变量。
