Python SyntaxError :'return' outside function

python

Solution

I would check my indentation, it looks off. Are you possibly mixing tabs and spaces? The PEP8 (Python Style Guide) recommends using 4 spaces only. Unlike other languages, whitepace makes a big difference in Python, so consistency is important.

The above also makes the following recommendation:

When invoking the Python command line interpreter with the -t option, it issues warnings about code that illegally mixes tabs and spaces. When using -tt these warnings become errors. These options are highly recommended!

In particular, your 2nd `else` seems to be off (probably should be indented), and this method `def __div__(self, other):` too (which I would think ought to be at the same level as your other `def`s - i.e., moved "out" rather than indented).

Problems mixing tabs/blanks are easy to have since both characters are "invisible".

Problem

Compiler showed: ``` File "temp.py", line 56 return result SyntaxError: 'return' outside function ``` Where was I wrong? ``` 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 ``` What about this? ``` 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 ```

Original source