声明全局变量

Max*_*Kim 1 python global-variables

我有2个关于全局变量的问题:

  1. 为什么我不能将列表声明为全局变量:global list_ex = []
  2. 我已经定义了一个我试图在函数中使用的全局变量,但是不能:

    global column
    
    def fx_foo(cols):
        common = set(cols).intersection(set(column)) #Error Here!!
    
    Run Code Online (Sandbox Code Playgroud)

当我尝试访问函数内的列时,我收到一个错误:

NameError:未定义全局名称"列"

Mar*_*ers 8

你没有global正确使用.你并不需要使用它在所有.

你需要实际设置一个全局column变量,现在没有.global不会使变量可用.只需创建全球column第一:

column = []
Run Code Online (Sandbox Code Playgroud)

然后在你的函数中引用它.这就是NameError异常试图告诉你的; Python无法找到全局column变量,您没有为名称指定任何内容,因此它不存在.

global如果要在函数中分配全局column ,则只需使用:

def somefunction():
    global column
    column = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

这里global需要关键字来区分函数中column局部变量.

相比:

>>> foo = 1
>>> def set_foo():
...     foo = 2
...
>>> set_foo()
>>> foo
1
Run Code Online (Sandbox Code Playgroud)

>>> foo = 1
>>> def set_foo():
...     global foo
...     foo = 2
...
>>> set_foo()
>>> foo
2
Run Code Online (Sandbox Code Playgroud)

第一种形式只设置局部变量,第二种形式设置全局变量.