Shi*_*dla 2 python function global-variables
下面是我的代码
global PostgresDatabaseNameSchema
global RedShiftSchemaName
PostgresDatabaseNameSchema = None
RedShiftSchemaName = None
def check_assign_global_values():
if not PostgresDatabaseNameSchema:
PostgresDatabaseNameSchema = "Superman"
if not RedShiftSchemaName:
RedShiftSchemaName = "Ironman"
check_assign_global_values()
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误说
Traceback (most recent call last):
File "example.py", line 13, in <module>
check_assign_global_values()
File "example.py", line 8, in check_assign_global_values
if not PostgresDatabaseNameSchema:
UnboundLocalError: local variable 'PostgresDatabaseNameSchema' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
那么我们不能从函数内部访问或设置全局变量吗?
global
应该始终在函数内部定义,这是因为它告诉函数您想使用全局变量而不是局部变量。你可以这样做:
PostgresDatabaseNameSchema = None
RedShiftSchemaName = None
def check_assign_global_values():
global PostgresDatabaseNameSchema, RedShiftSchemaName
if not PostgresDatabaseNameSchema:
PostgresDatabaseNameSchema = "Superman"
if not RedShiftSchemaName:
RedShiftSchemaName = "Ironman"
check_assign_global_values()
Run Code Online (Sandbox Code Playgroud)
您应该对如何使用global
. 您可以搜索许多其他 SO 问题。例如这个问题在创建它们的函数之外的函数中使用全局变量。