关于全局变量,我有两个问题:
global list_ex = []当我试图访问函数中的列时,会得到一个错误:
NameError:未定义全局名称“列”
发布于 2013-06-07 14:53:45
您没有正确地使用global。您根本不需要使用它,,。
您需要实际设置一个全局column变量,现在没有。global没有使变量可用。只需首先创建一个全局column:
column = []然后在你的函数中引用它。这就是NameError异常试图告诉您的;Python找不到全局column变量,您没有为名称分配任何内容,因此它不存在。
如果要分配给函数中的全局global,则只需要使用column。
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第一个表单只设置一个局部变量,第二个表单则设置全局变量。
发布于 2013-06-07 14:49:41
关键字全局表示您正在显式地使用在函数作用域之外声明的变量。
您的变量必须正常声明:
column = []并在使用它的函数中声明为全局的。
def fx_foo(cols):
global column
common = set(cols).intersection(set(column))它用于允许python区分新的局部变量和重用的全局变量。
发布于 2013-06-07 14:59:22
这将起作用:
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)) 我认为如果您想要显示column特性,那么将数据分配给global会更有趣(因为您可以使用来自非局部变量的列,而不需要全局声明,如果您没有为它分配任何东西)
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)) https://stackoverflow.com/questions/16986887
复制相似问题