[英]Declaring global variables
关于全局变量,我有两个问题:
global list_ex = []
? 我已经定义了要在函数中使用的全局变量,但是不能:
global column def fx_foo(cols): common = set(cols).intersection(set(column)) #Error Here!!
当我尝试访问函数内的列时,出现错误:
NameError:全局名称'列'未定义
您没有正确使用global
。 你并不需要在所有使用它。
您实际上需要设置一个全局column
变量,现在没有。 global
不使变量可用。 只需首先创建一个全局column
:
column = []
然后在您的函数中引用它。 那就是NameError
异常试图告诉您的; Python无法找到全局column
变量,您没有为该名称分配任何内容,因此该名称不存在。
仅在要分配给函数中的全局column
时才需要使用global
:
def somefunction():
global column
column = [1, 2, 3]
在这里,需要global
关键字来区分column
和函数中的局部变量。
相比:
>>> foo = 1
>>> def set_foo():
... foo = 2
...
>>> set_foo()
>>> foo
1
至
>>> foo = 1
>>> def set_foo():
... global foo
... foo = 2
...
>>> set_foo()
>>> foo
2
第一种形式仅设置局部变量,第二种形式则设置全局变量。
关键字global表示您正在显式使用在函数范围之外声明的变量。
您的变量必须正常声明:
column = []
并在使用它的函数中声明为global
def fx_foo(cols):
global column
common = set(cols).intersection(set(column))
它用于允许python区分新的局部变量和重用的全局变量。
这将工作:
column =[]
def fx_foo(cols):
global column
common = set(cols).intersection(set(column))
但这即使在没有global
情况下也可以使用,因为这里的column
将被视为非本地的
column =[]
def fx_foo(cols):
common = set(cols).intersection(set(column))
我认为,如果要显示global
功能,则将数据分配给column
会更有趣(因为如果不分配任何内容,则可以使用非本地列而不使用全局声明)
column =[]
def fx_foo(cols):
global column
column = set(cols).intersection(set(column))
要么
def fx_foo(cols):
column =[]
global column
column = set(cols).intersection(set(column))
全局变量需要在函数内部而不是外部声明为全局。 默认情况下,在函数外部声明的变量是全局变量。
如果只需要访问变量,函数就不需要将其声明为全局变量。 全局声明仅在您需要修改全局变量时使用。
因此,在您的情况下,建议您在将其传递给函数时查看实际的列,因为我认为问题可能与此有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.