您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python 3:UnboundLocalError:分配前引用的局部变量

Python 3:UnboundLocalError:分配前引用的局部变量

你可以通过传递参数而不是依赖全局变量解决此问题

def function(Var1, Var2): 
    if Var2 == 0 and Var1 > 0:
        print("Result One")
    elif Var2 == 1 and Var1 > 0:
        print("Result Two")
    elif Var1 < 1:
        print("Result Three")
    return Var1 - 1
function(1, 1)

这是因为,即使Var1存在,你也要Var1函数内部的名称上使用赋值语句(Var1 -= 1在底行)。自然地,这会在函数范围内创建一个变量(实际上,Var1a-=或+=只会更新(重新分配)现有变量,但是由于未知的原因(在这种情况下可能是一致性),Python会将其视为分配)。Python解释器会在模块加载时看到此情况,并(正确地)决定Var1不应该在局部作用域内使用全局作用域,这在你尝试在局部分配变量之前尝试引用该变量时会导致问题。

Python开发人员通常不赞成使用不必要的全局变量,因为这会导致混乱和有问题的代码。但是,如果你想使用它们来完成代码所隐含的含义,则只需添加


global Var1, Var2

函数顶部 这将告诉Python你无意在函数的本地范围内定义Var1或Var2变量。Python解释器会在模块加载时看到这一点,并决定(正确地)决定在全局范围内查找对上述变量的任何引用。

python 2022/1/1 18:23:51 有663人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶