Объявление переменных и запись данных в Python
Основы объявления переменных
В Python переменная создается в момент первого присваивания ей значения. Интерпретатор автоматически определяет тип данных на основе присвоенного объекта. Наиболее распространенный способ - оператор присваивания =.
Простое присваивание: имя = выражение. После этого переменная ссылается на объект, полученный в результате вычисления выражения.
name = 'Алиса'
age = 30
pi = 3.14
Python определение функции (определение функции в python)
Здесь созданы три переменные: строковая, целочисленная и с плавающей точкой. Тип определяется автоматически.
Типичная ошибка: использование неопределенной переменной до присваивания. Вызовет NameError. Решение - всегда присваивать значение перед использованием.
Как присвоить значения нескольким переменным в одной строке?
a, b, c = 1, 2, 3
Positional argument python (позиционные аргументы в python)
Кортеж значений справа распаковывается в переменные слева. Количество элементов должно совпадать.
Ошибка: несовпадение количества вызовет ValueError: too many values to unpack. Решение - использовать распаковку с * или согласовать количество.
Как извлечь первый элемент и остаток последовательности?
numbers = [10, 20, 30, 40, 50]
first, *rest = numbers
print(first, rest) # 10 [20, 30, 40, 50]
базовые коды в python (базовые коды на python)
Оператор * собирает оставшиеся элементы в список. Можно использовать в любой позиции.
Ошибка: если последовательность пуста, то rest будет пустым списком, а переменная без звездочки получит ValueError (если не хватает элементов). Решение - проверять длину или использовать значение по умолчанию.
Как присвоить значение переменной внутри выражения (walrus operator)?
if (n := len([1,2,3,4,5,6])) > 5:
print(f'Длина списка {n} больше пяти')
запись переменных в python (объявление и запись переменных в python)
Оператор := (Python 3.8+) присваивает значение переменной и одновременно возвращает его. Удобно в условиях и циклах.
Типичная ошибка: попытка использовать := внутри обычного присваивания - синтаксическая ошибка. Разрешено только в выражениях (например, в условиях, списковых включениях).
Как присвоить переменной значение с преобразованием типа?
x = int('42')
y = float('3.14')
z = bool(1)
как закоментить несколько строк в python (комментирование блоков кода в python)
Функции преобразования явно задают тип, что полезно при получении данных из внешних источников.
Ошибка: если строка не может быть преобразована, возникает ValueError. Решение - использовать обработку исключений try/except.
Как динамически создать переменную по имени (не рекомендуется)?
var_name = 'dynamic_var'
globals()[var_name] = 100
print(dynamic_var) # 100
Через globals() или locals() можно задать переменную с именем из строки. Однако такой подход усложняет отладку и читаемость; предпочтительнее использовать словарь.
Проблема: затрудняется статический анализ кода, возможны конфликты с существующими именами. Используйте только в крайних случаях.
Расширенные примеры присваивания
Ниже приведены менее распространенные, но полезные варианты записи переменных.
Обмен значениями двух переменных
a, b = 5, 10
a, b = b, a
print(a, b) # 10 5
Кортежная распаковка позволяет обменять значения без временной переменной.
10 5
Распаковка с подчеркиванием и звездочкой
_, second, *_ = [1, 2, 3, 4, 5]
print(second) # 2
Подчеркивание _ - соглашение для неиспользуемых значений. Звездочка собирает остаток.
2
Присваивание срезу списка
lst = [1, 2, 3, 4]
lst[1:3] = [10, 20]
print(lst) # [1, 10, 20, 4]
Срез может заменить подпоследовательность другим списком. Количество элементов не обязательно совпадает.
[1, 10, 20, 4]
Присваивание ключу словаря
d = {}
d['key'] = 'value'
print(d) # {'key': 'value'}
Словари позволяют динамически создавать и изменять записи.
{'key': 'value'}Использование walrus в списковом включении
[(x, y) for x in range(3) if (y := x * 2) > 0]
# Результат: [(1, 2), (2, 4)]
Оператор := позволяет определить переменную внутри генератора и использовать её в условии и возвращаемом значении.
[(1, 2), (2, 4)]
Вложенная распаковка
point = (10, (20, 30))
x, (y, z) = point
print(x, y, z) # 10 20 30
Распаковка работает рекурсивно для вложенных последовательностей.
10 20 30
Присваивание атрибутам объекта
class Person:
pass
p = Person()
p.name = 'Боб'
p.age = 25
print(p.name, p.age) # Боб 25
Атрибуты экземпляра создаются в момент присваивания.
Боб 25