1
g=0
def smooth(self, a, b):
    k=0
    c = self.name[a]
    d = self.name[b]
    e,f=c,d
    while(e.get_p()!=f.get_p() and e.get_p()!=None and f.get_p()!=None):
        k+=1
        e=e.get_p()
        f=f.get_p()
    if(e.get_p==None and f.get_p()!=None):
        global g
        g+=1
        d=d.get_p()
        return self.smooth(a,d.name)
    return(k,g)

忽略调用的函数,但在 if 语句中它没有更新 g 的值,并给出错误global name 'g' is not defined on call with a value. Please Help

4

1 回答 1

3

在这段代码中:

g=0
def smooth(self, a, b):

smooth看起来像一个类实例方法,g因此看起来像一个类变量,而不是全局变量,因此该global关键字不起作用。尝试将其称为MyClass.g(其中“MyClass”是您的班级的实际名称),或__class__.g.

于 2013-06-01T11:16:50.753 回答