【问题标题】: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 循环中而不会引发语法错误?

【问题讨论】:

    标签: python python-3.x syntax logic global-variables


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 2011-03-22
      • 2011-02-12
      • 2012-11-11
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多