在函数中使用另一个函数的变量

2024-03-28 11:12:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试过搜索这个,但我不太明白。我遇到了这个错误,所以我形成了一个简单的例子。你知道吗

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: local variable 'a' referenced before assignment。当我四处搜索时,我发现您需要使用global,但我已经在使用它了。你知道吗

所以我不明白。有人能简单地解释一下我做错了什么吗? 谢谢。你知道吗


Tags: 代码testinputiflocaldef错误variable
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

global声明只适用于该函数。因此test()中的声明意味着在该函数中使用变量a将引用全局变量。它对其他函数没有任何影响,因此如果test2也希望访问全局变量,那么您也需要在那里使用相同的声明。你知道吗

def test2():
    global a
    a += 1
    print(a)

相关问题 更多 >