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 中也问过类似的问题,但我搞不清楚我的代码哪里错了。我只在方法内部声明了全局。
错误是因为
global
块中的声明elif
是在块中的赋值之后if
。您不能global
对函数中较早使用的变量进行声明。文档说:该块是否执行并不重要
if
;这是一个编译时声明,而不是可执行语句。global
在所有使用之前,您应该只对变量进行一次声明: