【问题标题】:can't access global variable from inside a function in python无法从python中的函数内部访问全局变量
【发布时间】:2017-03-04 07:50:06
【问题描述】:

下面是我的代码

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

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

【问题讨论】:

标签: python function global-variables


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多