gpt4 book ai didi

python - Python 方法中未解析的引用

转载 作者:行者123 更新时间:2023-12-05 08:23:05 24 4
gpt4 key购买 nike

我正试图找出这个错误的原因。代码是

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

问:等等,解释器为什么不提示 b

A:因为您没有分配任何东西给函数内的b,因此解释器将使用变量b 来自全局范围。

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

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

请注意,此函数的行为略有不同。您的原始函数没有返回任何内容,而我修改后的 x 版本将始终返回 a 的值,修改或未修改的值取决于 b 的值

这样做的好处是您可以使用返回值,并且可以将 print() 移出函数。

关于python - Python 方法中未解析的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50909208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com