Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';t在python中从函数内部访问全局变量_Python_Function_Global Variables - Fatal编程技术网

can';t在python中从函数内部访问全局变量

can';t在python中从函数内部访问全局变量,python,function,global-variables,Python,Function,Global Variables,下面是我的代码 global PostgresDatabaseNameSchema global RedShiftSchemaName PostgresDatabaseNameSchema = None RedShiftSchemaName = None def check_assign_global_values(): if not PostgresDatabaseNameSchema: PostgresDatabaseNameSchema = "Superman"

下面是我的代码

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
回溯(最近一次呼叫最后一次):
文件“example.py”,第13行,在
检查\u分配\u全局\u值()
文件“example.py”,第8行,在check\u assign\u global\u值中
如果不是PostgresDatabaseNameSchema:
UnboundLocalError:赋值前引用了局部变量“PostgresDatabaseNameSchema”

那么,我们不能从函数内部访问或设置全局变量吗?

全局变量应始终在函数内部定义,原因是它告诉函数您希望使用全局变量而不是局部变量。您可以这样做:

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
有一些基本的了解。还有很多其他问题,所以你可以搜索。例如这个问题。

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
有一些基本的了解。还有很多其他问题,所以你可以搜索。例如这个问题。

可能的重复