Зачем лишний раз упоминать True или False, когда Python позволяет писать более лаконичный код? Следует пользоваться данной возможностью.


Пример 1

В данном случае можно не использовать True и False явно, тем самым высушивая код. Заодно код избавляется и от [[Избыточные if-else|избыточных if-else]].

Плохо:


def get_link_status(link):
link_status = ...
if link_status:
    return True
else:
    return False

Хорошо:


def get_link_status(link):
link_status = ...
return bool(link_status)


Пример 2

Плохо:


def has_add_permission(self, request):
content_type = request.GET.get('content_type')
object_id = request.GET.get('object_id')
if content_type and object_id:
    return True
return False

Хорошо:


def has_add_permission(self, request):
content_type = request.GET.get('content_type')
object_id = request.GET.get('object_id')
return bool(content_type and object_id)


Пример 3

При сравнении двух значений всегда возвращается bool. Поэтому можно не использовать True и False явно, и высушить код.

Плохо:


SECONDS_LIMIT = 3600


def check_visit_length(duration, seconds_limit=SECONDS_LIMIT):
    seconds_on = duration.total_seconds()
    if seconds_on > seconds_limit:
        return True
    return False


def main():
    ...
    duration = ...
    is_strange_visit = check_visit_length(duration)
    ...

Хорошо:


SECONDS_LIMIT = 3600


def check_visit_length(duration, seconds_limit=SECONDS_LIMIT):
    seconds_on = duration.total_seconds()
    return seconds_on > seconds_limit


def main():
    ...
    duration = ...
    is_strange_visit = check_visit_length(duration)
    ...