Skip to main content
 首页 » 编程设计

python之声明全局变量

2025年05月04日12freeliver54

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

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

    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 

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