Python 在函数中使用来自另一个函数的变量
我试图搜索这个,但我不太明白。我遇到了这个错误,所以我形成了一个简单的例子Python 在函数中使用来自另一个函数的变量,python,python-3.x,Python,Python 3.x,我试图搜索这个,但我不太明白。我遇到了这个错误,所以我形成了一个简单的例子 def test(): global a a = 0 a+=1 def test2(): a+=1 print (a) inp = input('a?') if inp == 'a': test() test2() 当我输入a时。我希望代码输出2。但是,我得到了这个错误UnboundLocalError:赋值之前引用的局部变量“a”。当我四处搜索时,我发现您
def test():
global a
a = 0
a+=1
def test2():
a+=1
print (a)
inp = input('a?')
if inp == 'a':
test()
test2()
当我输入a
时。我希望代码输出2。但是,我得到了这个错误UnboundLocalError:赋值之前引用的局部变量“a”
。当我四处搜索时,我发现您需要使用global
,但我已经在使用它了
所以我不明白。有人能简单地解释一下我做错了什么吗?
谢谢。A
global
声明仅适用于该函数。因此test()
中的声明意味着在该函数中使用变量a
将引用全局变量。它对其他函数没有任何影响,因此如果test2
也希望访问全局变量,那么您也需要相同的声明
def test2():
global a
a += 1
print(a)
全局
声明仅适用于该函数。因此test()
中的声明意味着在该函数中使用变量a
将引用全局变量。它对其他函数没有任何影响,因此如果test2
也希望访问全局变量,那么您也需要相同的声明
def test2():
global a
a += 1
print(a)
1) 您可以返回修改后的值,如下所示:
def test():
a = 0
a+=1
return a
def test2(a):
a+=1
print (a)
inp = input('a?')
if inp == 'a':
a = test()
test2(a)
2) 或者您可以使用一个类:
class TestClass:
a = 0
def test(self):
self.a = 0
self.a+=1
def test2(self):
self.a+=1
print (self.a)
选择2的使用:
>>> example = TestClass()
>>> example.test()
>>> example.test2()
2
1) 您可以返回修改后的值,如下所示:
def test():
a = 0
a+=1
return a
def test2(a):
a+=1
print (a)
inp = input('a?')
if inp == 'a':
a = test()
test2(a)
2) 或者您可以使用一个类:
class TestClass:
a = 0
def test(self):
self.a = 0
self.a+=1
def test2(self):
self.a+=1
print (self.a)
选择2的使用:
>>> example = TestClass()
>>> example.test()
>>> example.test2()
2
您还需要在
test2
中使用global a
。输入的要点是什么?它与这个问题有什么关系?更好的是:尽量避免使用global
名称,它们破坏了代码的模块性。不,它只是说在这个函数中,a
应该引用全局变量。你不能通过编写test()
和test2()来演示它吗没有if
?您还需要test2
中的全局a
。输入和if
有什么意义?它与这个问题有什么关系?更好的是:尽量避免使用global
名称,它们破坏了代码的模块性。不,它只是说在这个函数中,a
应该引用全局变量。你不能通过编写test()
和test2()来演示它吗
如果没有if
?我想如果您也解释了原始代码不起作用的原因,那么这将是更好的答案(不使用全局
几乎总是更好)但它并没有解决在原始代码中实际不起作用的问题。我想如果你也解释了为什么原始代码不起作用,那么这将是更好的答案(不使用global
几乎总是更好),但它没有解决在原始代码中实际不起作用的问题。