Python: 为什么 if-else 单行语句不能与 continue in else 一起使用?
Python: Why if-else oneline statement does not work with continue in else?
有一个代码可以抓取网页并找到关于 python 的文章并显示它们的名称和链接。
问题是if / else,如果使用制表符和分号分隔,则一切正常。但是如果你把 if / else 写在一行中,并且 'continue' 运算符将成为 else 的主体,那么它就不起作用,指的是语法错误。
语法错误:语法无效
def habr_python_articles():
pageid = 1
headline_link_dict = {
}
for pageid in range(1, 10):
url = 'https://habr.com/en/all/page%d/' % pageid
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
for headline_tag in soup.findAll('a', {'class': 'post__title_link'}):
result = str(headline_tag.contents).lower().find('python')
# TODO if else continue one line statement
#print(str(headline_tag.contents) + '\n\t' + headline_tag['href']) if result > 0 else continue
if result > 0:
headline_link_dict[str(headline_tag.contents)] = headline_tag['href']
else:
continue
return headline_link_dict
虽然,如果不是继续写其他东西,例如,打印一些东西或数学动作,那么一切正常。有没有我遗漏的东西,或者我需要记住并留下的东西?
因为continue
是语句,不是表达式。
x = foo if bar else baz
意味着产生一个值,然后将 x
绑定到该值。为了使之成为可能,foo
、bar
和 baz
需要是可以计算的东西(表达式)。
在
的情况下x
应该变成什么
x = foo if False else continue
?
对...
有一个代码可以抓取网页并找到关于 python 的文章并显示它们的名称和链接。
问题是if / else,如果使用制表符和分号分隔,则一切正常。但是如果你把 if / else 写在一行中,并且 'continue' 运算符将成为 else 的主体,那么它就不起作用,指的是语法错误。
语法错误:语法无效
def habr_python_articles():
pageid = 1
headline_link_dict = {
}
for pageid in range(1, 10):
url = 'https://habr.com/en/all/page%d/' % pageid
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
for headline_tag in soup.findAll('a', {'class': 'post__title_link'}):
result = str(headline_tag.contents).lower().find('python')
# TODO if else continue one line statement
#print(str(headline_tag.contents) + '\n\t' + headline_tag['href']) if result > 0 else continue
if result > 0:
headline_link_dict[str(headline_tag.contents)] = headline_tag['href']
else:
continue
return headline_link_dict
虽然,如果不是继续写其他东西,例如,打印一些东西或数学动作,那么一切正常。有没有我遗漏的东西,或者我需要记住并留下的东西?
因为continue
是语句,不是表达式。
x = foo if bar else baz
意味着产生一个值,然后将 x
绑定到该值。为了使之成为可能,foo
、bar
和 baz
需要是可以计算的东西(表达式)。
在
的情况下x
应该变成什么
x = foo if False else continue
?
对...