无论如何在声明后分配一个全局变量吗?

Posted

技术标签:

【中文标题】无论如何在声明后分配一个全局变量吗?【英文标题】:Is there anyway to assign a global variable after declaration? 【发布时间】:2022-01-22 23:37:59 【问题描述】:

在对变量进行全局声明之前,有什么方法可以分配变量?我知道这样做是为了避免可能导致的问题,但为什么它会为一个不会成为问题的函数引发错误?考虑一个看起来像这样的函数

def func():
    if "a" not in globals():
        global a
        a = 0

    else:
        global a

我试图让这在逻辑上不可能声明global a,并在locals() 中有a = 0。因为第一次调用函数时,它声明global a,然后为其分配一个全局值。对于之后的所有调用,a 不应该在locals() 中,那么为什么还要引发语法错误呢?

我知道我可以简单地将global a 移出if 循环以修复语法错误,但是有没有办法将global a 保留在else 循环中而不会引发语法错误?

【问题讨论】:

【参考方案1】:

https://docs.python.org/3/reference/simple_stmts.html#grammar-token-python-grammar-global_stmt

全局语句中列出的名称不得在该全局语句之前的同一代码块中使用。

“在文本之前...”听起来像是针对您正在尝试的事情的明确语言。

【讨论】:

以上是关于无论如何在声明后分配一个全局变量吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中,如何使用虚拟基类型声明一个全局的、静态分配的变量?

malloc 和全局变量声明在 C 中将它们的变量分配到哪里? [复制]

如何动态分配全局 int*?

如何在 VBA 中声明一个全局变量?

我可以在 Marklogic Server 的 xquery 中声明一个全局变量吗?

我想请教一下,powershell的脚本之间如何传递全局变量。