2017-03-04 80 views
0

下面是我的代码不能从一个函数内部访问全局变量在python

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() 

但我得到一个错误说

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 

所以我们不能访问或设置全局函数内部的变量?

+2

[在创建它们的函数中使用全局变量]的可能重复(http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-该一个 - 即创建,它们) – putonspectacles

回答

1

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() 

你应该如何使用global一些基本的了解。还有很多其他的SO问题可供您搜索。如这个问题Using global variables in a function other than the one that created them

相关问题