Python 方法中未解决的引用

2024-05-03

我正在尝试找到此错误的原因。代码是

def x():
    if b == 1:
        a = a + 4
        print(a)
a = 5
b = 1 

x()

第二次我的变量a用来 :a = a + 4,发生错误。

我正在开发一个主要使用此类作业的程序。


分配a = a + 4告诉解释器使用本地版本a而不是全局参考。

现在在作业中a = a + 4,当解释器查找局部变量的值时a,解释器发现变量未定义并会产生UnboundLocalError: local variable 'a' referenced before assignment.

您可以使用以下方法更改此行为global关键词:

def x():
    global a
    if b == 1:
        a = a + 4
        print(a)
        return
a = 5
b = 1
x()

Q:等等,为什么翻译不抱怨b?

A:因为你不是指派任何事情b在函数内,因此解释器将使用该变量b从全球范围来看。

但是,这种情况不需要全局变量。避免全局变量的更优雅的版本是:

def x(a, b):
    if b == 1:
        a = a + 4
    return a
print( x(5, 1) )

请注意,此函数的行为略有不同。你原来的函数没有返回任何东西,而我的修改版本x将始终返回值a,修改或未修改,具体取决于b.

这样做的优点是您可以使用返回值并且可以移动print()脱离函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 方法中未解决的引用 的相关文章

随机推荐