我在Python中遇到语法错误,错误:
SyntaxError: 'return' outside 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
我显然错过了一些东西,我只是想不出是什么。
答案 0 :(得分:7)
我怀疑你正在混合标签和空格..你的def
前面有4个空格,随后你使用多个标签进行缩进。
PEP 8建议使用(4)spaces over tabs。
还请注意PEP 8中的以下内容:
Python 3不允许混合使用制表符和空格来缩进。
使用标签和空格的混合缩进的Python 2代码应该是 转换为专门使用空格。
使用-t调用Python 2命令行解释器时 选项,它会发出有关非法混合标签和代码的警告 空间。使用-tt时,这些警告会出错。这些选项是 强烈推荐!