Переменные в Python: правила и приёмы работы со значениями
Основы присваивания переменных
В Python переменная создаётся в момент присваивания ей значения. Тип данных определяется автоматически, что делает язык динамически типизированным. После присваивания переменную можно использовать в выражениях, изменять её значение или передавать в функции.
Как присвоить значение переменной?
Базовый синтаксис: имя_переменной = выражение. Имя переменной должно начинаться с буквы или подчёркивания и может содержать буквы, цифры и подчёркивания.
x = 10
name = "Python"
pi = 3.14159
is_ready = FalsePython значение переменной (значение переменной в python)
Каждая строка создаёт переменную с указанным значением. Тип определяется по значению: int, str, float, bool.
NameError. Решение: всегда инициализировать переменную перед первым использованием.Как присвоить одно значение нескольким переменным?
a = b = c = 0изменить значение переменной python (изменение значения переменной в python)
Все три переменные получают одно и то же число 0. Для изменяемых объектов (списки, словари) такая запись приводит к тому, что все переменные ссылаются на один и тот же объект.
a = b = [] создаёт одну ссылку. Изменение списка через a отражается на b. Решение: для изменяемых объектов использовать раздельные присваивания: a = []; b = [].Как обменять значения двух переменных без временной?
a, b = 5, 10
a, b = b, a
print(a, b) # 10 5целая переменная в python (целочисленная переменная)
Правая часть вычисляется как кортеж, затем происходит распаковка в левую часть. Это быстрый и читаемый способ.
Как присвоить элементы списка отдельным переменным?
values = [1, 2, 3]
x, y, z = values
print(x, y, z) # 1 2 3Последовательность (список, кортеж, строка) распаковывается по позициям.
ValueError. Решение: использовать символ * для захвата избыточных элементов.Как захватить часть элементов при распаковке?
first, *middle, last = [1, 2, 3, 4, 5]
print(first) # 1
print(middle) # [2, 3, 4]
print(last) # 5Символ * собирает все оставшиеся элементы в список. Можно использовать только одну звёздочку в левой части.
Как присвоить значение переменной внутри выражения (walrus operator)?
if (n := len([1,2,3])) > 0:
print(f"Длина {n}")Оператор := (Python 3.8+) присваивает значение переменной и возвращает его, позволяя использовать переменную в том же выражении.
Как присвоить значение переменной, полученное от функции?
def get_stats():
return 10, 20
a, b = get_stats()
print(a, b) # 10 20Функция возвращает кортеж, который распаковывается в переменные. Количество переменных должно совпадать с количеством возвращаемых значений.
Расширенные примеры присваивания
Эти примеры демонстрируют неочевидные возможности присваивания в Python, которые часто встречаются на практике.
Распаковка вложенных структур
data = [(1, 'a'), (2, 'b')]
for (num, letter) in data:
print(num, letter)1 a 2 b
Цикл for распаковывает каждый кортеж из списка в переменные num и letter. Такой подход упрощает обработку пар значений.
Захват произвольного числа элементов с помощью *
a, *b, c = (1, 2, 3, 4, 5)
print(a, b, c) # 1 [2, 3, 4] 51 [2, 3, 4] 5
Звёздочка *b собирает все средние элементы в список. Это удобно, когда важны первый и последний элементы, а промежуточные могут быть любой длины.
Присваивание с walrus operator в списковом включении
numbers = [1, 2, 3, 4, 5]
squared = [y for x in numbers if (y := x*2) > 5]
print(squared) # [6, 8, 10][6, 8, 10]
Оператор := позволяет вычислить x*2, сохранить результат в y и сразу использовать его в условии фильтрации. Без этого пришлось бы дублировать вычисление.
Распаковка словаря в аргументы функции
def func(a, b, c):
return a + b + c
params = {'a': 1, 'b': 2, 'c': 3}
result = func(**params)
print(result) # 66
Оператор ** распаковывает словарь в именованные аргументы. Этот приём часто используется при вызове функций с большим количеством параметров.