Python SyntaxError:'return'外部函数

lav*_*ien 9 python

编译器显示:

File "temp.py", line 56
    return result
SyntaxError: 'return' outside function
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

class Complex (object):
    def __init__(self, realPart, imagPart):
        self.realPart = realPart
        self.imagPart = imagPart            

    def __str__(self):
        if type(self.realPart) == int and type(self.imagPart) == int:
            if self.imagPart >=0:
                return '%d+%di'%(self.realPart, self.imagPart)
            elif self.imagPart <0:
                return '%d%di'%(self.realPart, self.imagPart)   
    else:
        if self.imagPart >=0:
                return '%f+%fi'%(self.realPart, self.imagPart)
            elif self.imagPart <0:
                return '%f%fi'%(self.realPart, self.imagPart)

        def __div__(self, other):
            r1 = self.realPart
            i1 = self.imagPart
            r2 = other.realPart
            i2 = other.imagPart
            resultR = float(float(r1*r2+i1*i2)/float(r2*r2+i2*i2))
            resultI = float(float(r2*i1-r1*i2)/float(r2*r2+i2*i2))
            result = Complex(resultR, resultI)
            return result

c1 = Complex(2,3)
c2 = Complex(1,4)
print c1/c2
Run Code Online (Sandbox Code Playgroud)

那这个呢?

class Complex (object):
    def __init__(self, realPart, imagPart):
        self.realPart = realPart
        self.imagPart = imagPart            

    def __str__(self):
        if type(self.realPart) == int and type(self.imagPart) == int:
            if self.imagPart >=0:
                return '%d+%di'%(self.realPart, self.imagPart)
            elif self.imagPart <0:
                return '%d%di'%(self.realPart, self.imagPart)
        else:
            if self.imagPart >=0:
                return '%f+%fi'%(self.realPart, self.imagPart)
            elif self.imagPart <0:
                return '%f%fi'%(self.realPart, self.imagPart)

    def __div__(self, other):
        r1 = self.realPart
        i1 = self.imagPart
        r2 = other.realPart
        i2 = other.imagPart
        resultR = float(float(r1*r2+i1*i2)/float(r2*r2+i2*i2))
        resultI = float(float(r2*i1-r1*i2)/float(r2*r2+i2*i2))
        result = Complex(resultR, resultI)
        return result

c1 = Complex(2,3)
c2 = Complex(1,4)
print c1/c2
Run Code Online (Sandbox Code Playgroud)

Lev*_*von 13

我会检查我的缩进,它看起来.你可能混合标签和空格?该PEP8(Python的风格指南)建议使用仅4个空格.与其他语言不同,whitepace在Python中有很大的不同,因此一致性非常重要.

以上还提出以下建议:

当使用-t选项调用Python命令行解释器时,它会发出有关非法混合制表符和空格的代码的警告.使用-tt时,这些警告会出错.强烈推荐这些选项!

特别是,你的第二个else似乎是关闭的(可能应该缩进),这个方法def __div__(self, other):也是(我认为它应该与你的其他defs 处于同一水平- 即,移出"而不是缩进").

混合标签/空白的问题很容易,因为两个字符都是"不可见的".