python - 声明全局变量

标签 python global-variables

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

  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

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

关于python - 声明全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986887/

相关文章:

java - Android 中公共(public)静态变量的生命周期是多少?

node.js - 在 Node.js 中使用全局变量进行依赖注入(inject)

javascript - 全局 jQuery 对话框变量无法正常工作

python - 如何从 PyTorch 网络中的稀疏矩阵获取后向梯度?

python - pandas 字符串以列的值结尾,然后将字符串的开头转换为日期进行比较

Python 转换日期时间以在 os.utime 中使用

使用 Scripts.Render MVC4 时的 Javascript 全局变量

Canvas 内的 Python Tkinter Canvas

python - 方法后 Tkinter 的内部工作

python - 编辑在不同文件中定义的python全局变量