Лучшие практики написания условных операторов в Python

Лучшие практики написания условных операторов в Python

Эта статья объясняет лучшие практики написания условных операторов в Python.

YouTube Video

Лучшие практики написания условных операторов в Python

Оператор if в Python является фундаментальной конструкцией для реализации условного ветвления, и он значительно влияет на читаемость и поддержку кода. Здесь мы подробно обсудим лучшие практики использования операторов if.

Используйте явные условные выражения

Пишите условные выражения кратко и ясно, избегая избыточных конструкций.

1condition = True
2
3### Bad Example
4if condition == True:
5    pass
6
7### Good Example
8if condition:
9    pass
  • В Python вы можете указать, что условие истинно, написав if condition:.

Комбинирование нескольких условий

При комбинировании нескольких условий используйте and или or. Однако при усложнении условных выражений читаемость может ухудшиться, поэтому рассмотрите следующие корректировки:.

 1age = 15
 2is_student = True
 3
 4### Bad Example
 5# Complex condition
 6if (age > 18 and age < 65) or (is_student and age > 15):
 7    pass
 8
 9### Good Example
10# Improving readability
11is_working_age = 18 < age < 65
12is_eligible_student = is_student and age > 15
13
14if is_working_age or is_eligible_student:
15    pass
  • Разделяя условия и присваивая их переменным, можно повысить читаемость.

Короткое замыкание при использовании and/or

В условных выражениях с использованием and или or, если результат может быть определён только по левому значению, происходит короткое замыкание и правая часть не вычисляется. Понимание этого помогает избегать ненужных вычислений и предотвращать ошибки.

 1user = None
 2def expensive_check():
 3    return True
 4
 5# Example of short-circuiting with 'and'
 6if user and user.is_active:
 7    # If user is None, user.is_active will NOT be evaluated
 8    print("Active user found.")
 9
10# Example of short-circuiting with 'or'
11if user.is_admin or expensive_check(user):
12    # If user.is_admin is True, expensive_check will NOT be called.
13    print("Access granted.")
14else:
15    print("Access denied.")
  • Используя механизм короткого замыкания, вы можете повысить эффективность и безопасность выполнения кода.

Приоритет операторов and и or

Оператор and имеет более высокий приоритет, чем or. Поэтому при наивном объединении условий вы можете получить неожиданные результаты. Важно использовать скобки, чтобы сделать ваши намерения очевидными.

 1age = 15
 2is_student = True
 3
 4### Unclear example
 5# This is interpreted as: age > 18 and (age < 65 or is_student)
 6if age > 18 and age < 65 or is_student:
 7    pass
 8
 9### Clear example
10# Explicit parentheses make the intended logic obvious
11if (age > 18 and age < 65) or is_student:
12    pass
  • Используя скобки, вы уточняете приоритеты and и or, что снижает риск неожиданных ошибок.

Понимание Truthy и Falsy значений

В Python следующие значения оцениваются как False:.

  • None
  • False
  • Число 0 (включая 0.0)
  • Пустые типы последовательностей (например, пустые списки, кортежи или строки)
    • Примеры: [], (), ""
  • Пустой словарь
    • Пример: {}

Использование этого может помочь упростить ваши условные выражения.

1items = [1, 2, 3]
2
3### Bad Example
4if len(items) > 0:
5    pass
6
7### Good Example
8if items:
9    pass

Правильное использование elif и else

При проверке нескольких условий используйте elif. Используйте else, чтобы определить поведение по умолчанию в конце.

 1score = 80
 2
 3if score >= 90:
 4    grade = "A"
 5elif score >= 80:
 6    grade = "B"
 7elif score >= 70:
 8    grade = "C"
 9else:
10    grade = "F"
  • else не является обязательным. Если все условия учтены, это можно опустить.
  • Обратите внимание на порядок условных выражений и организуйте их логически, избегая излишков.

Ограничьте глубину вложенности.

Глубокая вложенность операторов if усложняет чтение кода.

 1def access_resource():
 2    return True
 3
 4### Bad Example
 5def deep_nest(user, resource):
 6    if user.is_authenticated:
 7        if user.has_permission:
 8            if resource.is_available:
 9                access_resource()
10
11### Good Example
12def early_return(user, resource):
13    if not user.is_authenticated:
14        return
15    if not user.has_permission:
16        return
17    if not resource.is_available:
18        return
19
20    access_resource()
  • Использование раннего выхода может уменьшить вложенность и сделать код более лаконичным.

Избегайте использования однострочных операторов if.

Можно записывать операторы if в одну строку, но это может снизить читаемость.

 1condition = False
 2def do_something():
 3    return True
 4
 5### Bad Example
 6if condition: do_something()
 7
 8### Good Example
 9if condition:
10    do_something()
  • Однострочные операторы if допускаются только для простых условий или действий, но избегайте чрезмерно громоздкого кода.

Упрощение с помощью тернарного оператора или or

Для простых ветвлений условий использование тернарного оператора или or может сделать код более лаконичным. Однако чрезмерное использование может затруднить чтение кода, поэтому следует применять их только для простых и интуитивно понятных условий.

 1is_admin = True
 2input_name = None
 3
 4# Regular if statement
 5if is_admin:
 6    role = "Administrator"
 7else:
 8    role = "User"
 9
10# Simplified using an inline if
11role = "Administrator" if is_admin else "User"
12
13# Use 'or' to provide a default value
14name = input_name or "Guest"
  • Для простых условий использование тернарного оператора или or может сделать код короче и понятнее.

Кэширование условных выражений.

Условные выражения с ресурсоёмкими вычислениями или вызовами функций могут быть закэшированы в переменных для повышения производительности.

 1def expensive_function():
 2    pass
 3
 4def another_expensive_function():
 5    pass
 6
 7### Bad Example
 8if expensive_function() and another_expensive_function():
 9    pass
10
11### Good Example
12result1 = expensive_function()
13result2 = another_expensive_function()
14if result1 and result2:
15    pass

Резюме

Операторы if в Python являются простыми и мощными инструментами, но их неправильное использование может сделать код сложным и трудным для понимания. Применяя лучшие практики, представленные здесь, вы можете улучшить читаемость, поддерживаемость и эффективность вашего кода.

Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.

YouTube Video