Выражения присваивания в Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы узнаем о выражениях присваивания в Python, также называемых «оператором моржа» (:=). Этот оператор, введенный в Python 3.8, позволяет присваивать значение переменной в составе выражения. Он особенно полезен для оптимизации кода, избавления от избыточных вычислений и упрощения сложных выражений.

По окончании этого практического занятия вы должны быть в состоянии понять и применять выражения присваивания в своих программах на Python. Мы начнем с простых примеров и постепенно перейдем к более сложным.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/while_loops("While Loops") python/ControlFlowGroup -.-> python/list_comprehensions("List Comprehensions") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/scope("Scope") python/PythonStandardLibraryGroup -.-> python/math_random("Math and Random") subgraph Lab Skills python/variables_data_types -.-> lab-5002{{"Выражения присваивания в Python"}} python/numeric_types -.-> lab-5002{{"Выражения присваивания в Python"}} python/conditional_statements -.-> lab-5002{{"Выражения присваивания в Python"}} python/while_loops -.-> lab-5002{{"Выражения присваивания в Python"}} python/list_comprehensions -.-> lab-5002{{"Выражения присваивания в Python"}} python/function_definition -.-> lab-5002{{"Выражения присваивания в Python"}} python/scope -.-> lab-5002{{"Выражения присваивания в Python"}} python/math_random -.-> lab-5002{{"Выражения присваивания в Python"}} end

Простое выражение присваивания

В этом шаге мы начнем с простого примера, чтобы понять базовый синтаксис выражений присваивания.

Откройте Python-интерпретатор

Откройте Python-интерпретатор, введя следующую команду в терминале.

python3

Простой тест

Пустим простой пример

## Базовый пример выражения присваивания
n = 5
result = (squared := n * n)
print(squared, result)

Результат:

25 25

Здесь мы присваиваем результат n * n переменной squared с использованием оператора моржа := внутри скобок. Затем мы присваиваем значение squared переменной result. Наконец, мы выводим значения squared и result.

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

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

## Использование выражений присваивания в условном выражении
input_str = "Hello, world!"
if (length := len(input_str)) > 10:
    print(f"Строка содержит {length} символов, что больше 10.")
else:
    print(f"Строка содержит {length} символов, что меньше или равно 10.")

Результат:

Строка содержит 13 символов, что больше 10.

Здесь мы вычисляем длину input_str и присваиваем ее переменной length с использованием оператора моржа внутри условия if-выражения. Это позволяет нам использовать значение length в обоих ветках условного выражения.

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

Теперь посмотрим, как использовать выражения присваивания в цикле.

## Использование выражений присваивания в цикле
numbers = [1, 2, 3, 4, 5]
while (n := numbers.pop()) > 2:
    print(f"Извлечено {n}, что больше 2.")
print(f"Извлечено {n}, что меньше или равно 2.")

Результат:

Извлечено 5, что больше 2.
Извлечено 4, что больше 2.
Извлечено 3, что больше 2.
Извлечено 2, что меньше или равно 2

В этом примере мы используем оператор моржа внутри условия цикла while, чтобы извлекать элементы из списка numbers и присваивать их переменной n. Цикл продолжается, пока не будет извлечен элемент, меньший или равный 2.

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

Наконец, давайте исследуем использование выражений присваивания в генераторе списка.

## Использование выражений присваивания в генераторе списка
from math import sqrt

numbers = [1, 4, 9, 16, 25]
roots = [int(root) for n in numbers if (root := sqrt(n)) == int(root)]
print(roots)

Результат:

[1, 2, 3, 4, 5]

В этом примере мы используем оператор моржа в генераторе списка, чтобы вычислить квадратный корень каждого числа в numbers и проверить, является ли он целым числом. Если да, мы добавляем целый квадратный корень в список roots.

Резюме

В этом практическом занятии мы изучили выражения присваивания в Python (оператор моржа) с помощью серии пошаговых примеров. Мы рассмотрели базовый синтаксис и использование в условных выражениях, циклах и генераторах списка. На данный момент вы должны хорошо понять, как использовать выражения присваивания в своем коде на Python для оптимизации и упрощения сложных выражений.

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

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