Лучшие практики написания условных операторов в 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:.
NoneFalse- Число
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-канал.