Heim  >  Fragen und Antworten  >  Hauptteil

python - 关于函数调用的问题

def test1():
    a = 1
    b = 2
    
def test2():
    c = 3
    d = c + a
    print(d)
test2

这边想实现下面的test2调用上面test1里面的数据,要怎么实现,使用的是python3
天蓬老师天蓬老师2740 Tage vor659

Antworte allen(4)Ich werde antworten

  • 高洛峰

    高洛峰2017-04-18 10:20:48

    首先,你这种需求是不可能且不合理的,两个分立的函数不可能相互访问里面的变量的

    如果用闭包倒是可以做到,不过不知道是不是你想要的:

    def test1():
        a = 1
        b = 2
        def test2():
            c = 3
            d = c + a
            print(d)
        return test2
    
    test2 = test1()
    
    test2()

    Antwort
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:20:48

    可以将test1封装为一个类

    #-*-coding:utf8-*-
    class test1():
        """docstring for test1"""
        def __init__(self):
            self.a=0
            self.b=0
            self.test1()
        def test1(self):
            self.a=1
            self.b=2
    test = test1()
    def test2():
        c=3
        d=c+test.a
        print (d)
    test2()

    初始化可以放在你想调用的位置,并且在初始化的时候默认调用了test1()方法,这样就可以通过类的对象访问数据了。

    Antwort
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:20:48

    可以让test1用return来返回a和b的值:

    def test1():
        a = 1
        b = 2
        return a,b
    
    def test2():
        c = 3
        a,b = test1()
        d = c + a
        print(d)
    test2()

    Antwort
    0
  • ringa_lee

    ringa_lee2017-04-18 10:20:48

    哈哈,都是人才,闭包、封类、明确返回,以上每一个都是独立的解决办法。

    Antwort
    0
  • StornierenAntwort