Страницы

Поиск по вопросам

четверг, 20 декабря 2018 г.

Аналог нуль-коалесцирующего оператора в Питоне

def none_aware(val, default): return default if val is None else val
В библиотеке есть функция которая возвращает либо список либо None, а хочется написать
return [HtmlParser(el) for el in none_aware(content.select('...'), [])]
Вместо нескольких строк проверок.


Ответ

Можно попробовать так:
return [HtmlParser(el) for el in (content.select('...') or [])]
Нужно только учитывать что у класса может быть переопределён метод __bool__, но обычно даже в тех редких случаях, когда его переопределяют, его поведение в логических выражениях остаётся в рамках интуитивно ожидаемого.

Комментариев нет:

Отправить комментарий