13

编译器显示:

File "temp.py", line 56
    return result
SyntaxError: 'return' outside function

我哪里错了?

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

那这个呢?

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
4

6 回答 6

16

我会检查我的缩进,它看起来不对劲。您是否可能混合使用制表符和空格?PEP8 (Python 样式指南)建议仅使用 4 个空格。与其他语言不同,whitepace 在 Python 中有很大的不同,所以一致性很重要。

上面还提出以下建议:

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

特别是,您的 2ndelse似乎已关闭(可能应该缩进),而且这种方法def __div__(self, other):也是(我认为应该与您的其他defs 处于同一水平 - 即,移出“而不是缩进”)。

混合制表符/空白很容易出现问题,因为这两个字符都是“不可见的”。

于 2012-10-25T11:58:24.513 回答
4

确保您__div__的声明与您的级别相同__str__(现在,它在 内声明__str_)。

于 2012-10-25T12:00:44.283 回答
3

通过我的复制和粘贴,这行的所有内容:

else:
if self.imagPart >=0:
        return '%f+%fi'%(self.realPart, self.imagPart)
elif self.imagPart <0: # Everything under here..

到这一行:

    resultI = float(float(r2*i1-r1*i2)/float(r2*r2+i2*i2))
result = Complex(resultR, resultI)
return result # Needs to be unindented.

有错误的缩进。

于 2012-10-25T11:59:52.437 回答
2

好吧,我是 python 世界的新手。我学到的是 return 语句应该是这样的。

示例一:-

def split_train_test(data, test_ratio):
    shuffled_indices = np.random.permutation(len(data))
    test_set_size = int(len(data) * test_ratio)
    test_indices = shuffled_indices[:test_set_size]
    train_indices = shuffled_indices[test_set_size:]
    return data.iloc[train_indices],data.iloc[test_indices]

示例二:-

def load_housing_data(housing_path=HOUSING_PATH):
    csv_path = os.path.join(housing_path, "housing.csv")
    return pd.read_csv(csv_path)

我在这里回答:- https://stackoverflow.com/a/47377418/2298357

于 2017-11-19T13:38:52.473 回答
0
def functiont(x,y z,k):
    """some function
    """
    if xxxx:
        return True
    else
        return False

根据上面的代码,您可以看到该return语句在函数 def 内缩进,因此在这种情况下不会出现错误。但是,如果返回缩进如下,您将收到 python 错误 - SyntaxError :'return' outside function 。

def functiont(x,y z,k):
    """some function
    """
if xxxx:
    return True
else
    return False
于 2019-06-21T23:20:08.570 回答
0

使用好的编辑器

安装以下可以正确格式化文件的编辑器之一

格式化文档

例如:在 Visual Studio 代码中,打开文件 > 右键单击​​ > 格式化文档

查找并解决问题

编辑器格式化代码后,您将看到如下所示的内容

错误的代码

def func1():
    print ("I am in func1")
    return ""               # <----------- this is ok, its inside function func1

def func2():
    print ("I am in func2")
return ""                   # <-----CASE 1------ SyntaxError: 'return' outside function 'func2'

print ("I am outside of all functions")
return ""                   # <-----CASE 2------ SyntaxError: 'return' outside of all functions

注意 - 在案例 1 和案例 2 中,发生错误是因为“return”不在任何函数内,而是在所有函数之外。

好代码

def func1():
    print ("I am in func1")
    return ""           # <----------- this is ok, its inside function func1

def func2():
    print ("I am in func2")
    return ""           # <-----CASE 1-- Fixed, added SPACE or TAB, now 'return' is inside function

print ("I am outside of all functions")
                        # <-----CASE 2-- Fixed, 'return' is removed, no return is required here

这是一个非常常见的问题,当你在 python 中编写代码时,你可能会遇到一个空白。

希望有帮助。

于 2020-01-18T03:47:56.820 回答