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()
O que há de errado neste código? Estou recebendo:
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
Eu sei que há problemas semelhantes no SO, mas o que há de errado no meu código, não consigo descobrir. Declarei global somente dentro do método.
O erro é porque a
global
declaração noelif
bloco está depois da atribuição noif
bloco. Você não pode ter umaglobal
declaração para uma variável que é usada anteriormente na função. A documentação diz:Não importa se o
if
bloco é executado ou não; esta é uma declaração em tempo de compilação, não uma instrução executável.Você deve ter apenas uma
global
declaração para a variável antes de todos os usos: