Python: Почему оператор if-else oneline не работает с оператором continue в else? - PullRequest
0 голосов
/ 28 октября 2019

Существует код, который просматривает веб-страницы и находит статьи о python и отображает их имена и ссылки.

Проблема в том, что если / еще, если для разделения используются табуляция и точка с запятой, то все работает. Но если вы напишите if / else в одной строке, а оператор continue будет телом для else, то это не сработает, ссылаясь на синтаксическую ошибку.

SyntaxError: неверный синтаксис

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

Хотя, если вместо продолжения написать что-то еще, например, напечатать что-нибудь или математическое действие, то все работает. Я что-то упускаю или мне нужно запомнить и оставить?

1 Ответ

3 голосов
/ 28 октября 2019

Поскольку continue является оператором, а не выражением.

x = foo if bar else baz

предназначено для получения значения, а затем связать x с этим значением. Чтобы это было возможно, foo, bar и baz должны быть вещами, которые могут быть оценены (выражения).

Что должно стать x в случае

x = foo if False else continue?

Право ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...