无论如何在声明后分配一个全局变量吗?
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 中将它们的变量分配到哪里? [复制]