6. Expressions — Python 3.13.2 documentation

Выражения в Python представляют собой фундаментальные строительные блоки кода и используются для выполнения вычислений и манипулирования данными.
Выражения могут содержать различные операторы, включая арифметические, логические, сравнения и битовые, а также ссылки на переменные и функции.
Результат выполнения выражения вычисляется слева направо, в соответствии с приоритетом операторов. При необходимости можно использовать скобки для изменения приоритета операций.
Выражения в Python
Выражения - это основной строительный блок кода Python. Они используются для оценки значений, которые могут быть присвоены переменным, возвращены функциями или использованы в других выражениях.
В отличие от операторов, которые выполняют действия на выражениях, выражения сами не выполняют никаких действий. Они просто возвращают значение.
Например, следующий код использует выражение для вычисления площади прямоугольника:
python
base = 5
height = 10
area = base * height
Синтаксис выражений
В Python выражения формируют значения. Выражения могут содержать:
Константы (например, 5, "hello")
Переменные (например, x, y)
Операторы (например, +, -, *, /)
Вызовы функций (например, print("hello"))
Выражения оцениваются слева направо, с учетом приоритета операторов. Приоритеты различных операторов можно найти в документации Python.
Выражения могут быть группированы с помощью круглых скобок. Скобки изменяют порядок вычислений, обеспечивая вычисление подвыражений перед вычислением всего выражения:
python
(5 + 3) * 2 # Вычисляется как (8) * 2 = 16
Типы выражений
В Python выражения могут быть следующих типов:
Литералы - константы, такие как числа, строки и булевы значения.
Переменные - имена для хранения данных, на которые можно ссылаться и которым можно присваивать значения.
Операции - вычисления, выполняемые над операндами (литералами, переменными или выражениями), такие как арифметическое сложение или логическое сравнение.
Вызовы функций - обращения к функциям, возвращающим значения, с возможными аргументами.
Конструкции - специальные способы создания сложных структур данных, таких как списки или словари.
Генераторы - выражения, возвращающие итераторы для ленивого вычисления значений по мере необходимости.
Операнды и операторы
Операнды - это объекты, над которыми производится операция.
Операторы - это символы или ключевые слова, которые указывают на операцию, выполняемую над операндами. Каждый оператор должен иметь один или несколько операндов.
Например, в выражении `a + b`, операндами являются переменные `a` и `b`, а оператором является знак `+`.
Прецедентность и ассоциативность
Порядок выполнения операторов в выражении определяется их прецедентностью и ассоциативностью.
Прецедентность определяет, какой оператор имеет приоритет в выполнении. Операторы с более высокой прецедентностью выполняются первыми.
Ассоциативность определяет порядок выполнения операторов с одинаковой прецедентностью. Операторы могут быть левоассоциативными (выполняются слева направо) или правоассоциативными (выполняются справа налево).
Побочные эффекты и выражения без побочных эффектов
Рекомендация: При возможности создавайте выражения без побочных эффектов.
Выражения с побочными эффектами изменяют состояние программы во время их вычисления. Вызовы функций, изменения переменных и обращения к атрибутам объектов обычно имеют побочные эффекты.
Выражения без побочных эффектов не изменяют состояние программы. К ним относятся литералы (строки, числа и т.д.), константы (например, None или True) и простые операции (например, сложение или вычитание).
Преимущества выражений без побочных эффектов:
Улучшенная читаемость: Они проще для понимания, поскольку не зависят от скрытых состояний.
Повышенная предсказуемость: Результат вычисляется только на основе аргументов выражения.
Уменьшение ошибок: Поскольку побочные эффекты не учитываются, вероятность непреднамеренных изменений уменьшается.
Оптимизация выражений
Для повышения производительности следует использовать простейшие выражения при написании кода.
Рассмотрите следующие рекомендации:
- Используйте оператор
+=
вместоx = x + y
. - Избегайте использования ненужных круглых скобок.
- Упрощайте цепочки сравнений, используя логические операторы
and
иor
. - Объявляйте переменные в одном месте, а не многократно назначайте им значения.
- Используйте генераторы списков и словарей вместо циклов.
- Применяйте функции встраивания, такие как
sum
иmax
, вместо написания собственных циклов. - Избегайте вызовов функций в циклах, кэшируя результаты для улучшения производительности.
- Используйте специализированные модули, такие как
numba
иCython
, для оптимизации расчетов с интенсивными вычислениями.
Вопрос-ответ:
Как определить приоритет операций в выражениях Python?
Python использует порядок операций (PEMDAS): скобки, возведение в степень, умножение и деление, сложение и вычитание. Выражения в скобках вычисляются первыми, затем выполняются возведения в степень слева направо, затем умножение и деление слева направо, а после этого сложение и вычитание слева направо.
Могу ли я использовать разные типы данных в одном выражении?
Да, но это может привести к нежелательным результатам. Например, если вы сложите число и строку, строка будет преобразована в число (если это возможно), и результат будет числом. Однако если вы попытаетесь сложить число и список, вы получите ошибку типа.
В чем разница между операторами == и is?
Оператор == проверяет равенство двух значений, а оператор is проверяет, являются ли два значения одним и тем же объектом в памяти. Например, если у вас есть две переменные, указывающие на один и тот же список, оператор == вернет True, а оператор is также вернет True, поскольку они ссылаются на один и тот же объект в памяти. Однако если вы создадите две отдельные копии одного и того же списка, оператор == вернет True, а оператор is вернет False, поскольку они ссылаются на разные объекты в памяти.