#python #python_3x
def none_aware(val, default):
return default if val is None else val
В библиотеке есть функция которая возвращает либо список либо None, а хочется написать
return [HtmlParser(el) for el in none_aware(content.select('...'), [])]
Вместо нескольких строк проверок.
Ответы
Ответ 1
Можно попробовать так: return [HtmlParser(el) for el in (content.select('...') or [])] Нужно только учитывать что у класса может быть переопределён метод __bool__, но обычно даже в тех редких случаях, когда его переопределяют, его поведение в логических выражениях остаётся в рамках интуитивно ожидаемого.Ответ 2
Если Вы фанат однострочного кода, то вот: >>> def f(v,d=1): return d if v is None else v ... >>> f(None) 1 Средствами python можно сделать так: >>> a = lambda x: x if x else None >>> a(None) >>> a(1) 1 >>> a([i for i in range(10)]) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> А если вызвать сразу: >>> (lambda x: x if x else None)([i for i in range(10)]) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]Ответ 3
[HtmlParser(el) for el in content.select('...') or []] or вернёт первое значение имеющее значение True либо последнее значение
Комментариев нет:
Отправить комментарий