python返回函数
问题描述
我在 Python 中遇到语法错误,错误:
I'm getting a syntax error in Python, the error:
SyntaxError: 'return' outside function
这似乎很容易解释,但就 我 可以看到 return 是 inside 一个函数.
That seems pretty self-explanatory but as far as I can see return is inside a function.
这是我的代码:
def getLinks(self, url, fandom, soup):
links = []
searchElementDict = {
'aff':'select', 'fcwd':'select', 'ffn':'select', 'tthm':'select', 'lua':'select', 'ffa':'select',
'hpfd':'select', 'phns':'select', 'mbba':'div', 'avgf':'div', 'mugn':'select', 'hpffa':'select',
'hpff':'select',
}
if fandom in searchElementDict:
searchElement = searchElementDict[fandom]
searchElementForDict = {
'aff':'name', 'fcwd':'name', 'ffn':'title', 'tthm':'name', 'lua':'class', 'ffa':'class',
'hpfd':'name', 'phns':'name', 'mbba':'id', 'avgf':'id', 'mugn':'name', 'hpffa':'name',
'hppf':'name',
}
if fandom in searchElementForDict:
searchElementFor = searchElementForDict[fandom]
withValueDict = {
'aff':'chapnav', 'fcwd':'goto', 'ffn':'Chapter Navigation', 'tthm':'chapnav', 'lua':'textbox',
'ffa':'locationSelect', 'hpfd':'sid', 'phns':'chao', 'mbba':'mibba-layout-parts', 'avgf':'chapters',
'mugn':'chapter', 'hpffa':'chapter', 'hpff':'chapterid',
}
if fandom in withValueDict:
withValue = withValueDict[fandom]
try:
if fandom == 'mbba' or fandom == 'avgf':
chapterGroup = soup.find(searchElement, attrs={searchElementFor : withValue})
individualChapters = chapterGroup.findAll('a')
for each in individualChapters:
chapterLink = each['href']
links.append(chapterLink)
else:
chapterGroup = soup.find(searchElement, attrs={searchElementFor : withValue})
individualChapters = chapterGroup.findAll('option', attrs={'value=':''})
for each in individualChapters:
chapterLink = each.get('value')
links.append(chapterLink)
if fandom == 'fcwd':
del links[0]
elif fandom == 'hpfd' or fandom == 'hpff':
del links[0]
del links[0]
except:
links.append(1)
return links
我显然错过了一些东西,我只是想不通什么.
I'm obviously missing something, I just can't figure out what.
解决方案
我怀疑你混合了制表符和空格.. 你的 def
前面有 4 个空格,随后你使用多个制表符进行缩进.
I suspect you are mixing tabs and spaces .. your def
has 4 spaces preceding it, subsequently you are using multiple tabs for indentation.
PEP 8 建议使用 (4) 制表符上方的空格.
还要注意 PEP 8 中的以下内容:
Also note the following from PEP 8:
Python 3 不允许在缩进中混合使用制表符和空格.
Python 3 disallows mixing the use of tabs and spaces for indentation.
混合使用制表符和空格缩进的 Python 2 代码应该是转换为独占使用空格.
Python 2 code indented with a mixture of tabs and spaces should be converted to using spaces exclusively.
使用 -t 调用 Python 2 命令行解释器时选项,它会发出有关非法混合选项卡和代码的警告空格.使用 -tt 时,这些警告会变成错误.这些选项是强烈推荐!
When invoking the Python 2 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!
相关文章