Использование OR в операторе if для проверки наличия одного из параметров запроса

Я хочу реализовать простой фильтр с использованием одного параметра запроса (например, age=gt:40, name=eq:bob). Меня интересует, можно ли проверить, присутствует ли в GET-запросе сразу name или age? Пример может прояснить, что мне нужно:

if ('age' or 'name') in request.GET:

Это будет соответствовать только при использовании первого параметра. Когда я попадаю в конечную точку с параметром запроса name, он не соответствует true.

Я знаю, что могу сделать что-то вроде:

if ('age' in request.GET) or ('name' in request.GET) :

но это может довольно быстро вырасти и стать уродливым.

Вы можете использовать any(…) [Python-doc]:

if any(x in request.GET for x in ('age', 'name')):
    # …
    pass

Другой вариант - использовать set intersection:

if {'age', 'name'}.intersection(request.GET)
    ...

Это немного менее эффективно, чем any (нет ранней остановки), но, IMO, более читаемо

Вернуться на верх