Python - 语法错误:名称“point_to_managementDB”在全局声明之前分配给

问题描述 投票:0回答:1
point_to_managedDB = None

def _get_correct_DB_flag():
    if ENV == "dev":
        global point_to_managedDB
        point_to_managedDB = os.environ.get("OIA_POINT_TO_MANAGED_DB_DEV")
    elif ENV == "stg":
        global point_to_managedDB
        point_to_managedDB = os.environ.get("OIA_POINT_TO_MANAGED_DB_STG")
    elif ENV == "prod":
        global point_to_managedDB
        point_to_managedDB = os.environ.get("OIA_POINT_TO_MANAGED_DB_PROD")

_get_correct_DB_flag()

这段代码有什么问题吗? 我得到:

   File "/oia_application/scripts/database/env/sql_environments.py",
 line 37
     global point_to_managedDB
     ^ 
     SyntaxError: name 'point_to_managedDB' is assigned to before global declaration

我知道 SO 中也提出了类似的问题,但我的代码有什么问题,我无法弄清楚。我仅在方法内部声明了全局。

python-3.x global-variables
1个回答
0
投票

您应该只有一个

global
变量声明:

def _get_correct_DB_flag():
    global point_to_managedDB
    if ENV == "dev":
        point_to_managedDB = os.environ.get("OIA_POINT_TO_MANAGED_DB_DEV")
    elif ENV == "stg":
        point_to_managedDB = os.environ.get("OIA_POINT_TO_MANAGED_DB_STG")
    elif ENV == "prod":
        point_to_managedDB = os.environ.get("OIA_POINT_TO_MANAGED_DB_PROD")
© www.soinside.com 2019 - 2024. All rights reserved.