Объяснение к уроку
После этого урока ты сможешь:
Кортежи группируют упорядоченные значения, как и списки, но не могут быть изменены на месте. Круглые скобки делают литералы кортежей более читаемыми; именно запятая создает кортеж, поэтому кортеж из одного элемента требует завершающей запятой: ("eu",).
Индексы работают так же, как в списках: первое значение находится по индексу 0, а -1 считывает последнее. Когда известно, сколько полей содержит запись, распаковка присваивает их все сразу: name, region = record. Python вызывает ValueError, когда количество целевых переменных не совпадает с количеством значений.
Распаковка также может менять местами две переменные без отдельной временной переменной. В отличие от списка, record[0] = value вызывает TypeError: создай новый кортеж, если тебе нужна измененная запись.
Индексация кортежа использует те же положительные и отрицательные позиции, что и индексация списка.
endpoint = ("billing", "eu", 443)
print(endpoint[0])
print(endpoint[-1])Вывод:
billing
443Одни лишь круглые скобки просто группируют выражение; запятая же указывает на кортеж из одного элемента.
region = ("apac",)
print(type(region).__name__)
print(len(region))Вывод:
tuple
1Распаковка делает поля наглядными без повторяющихся выражений индексации.
host = ("gateway", 8080, True)
service, port, online = host
print(f"{service}:{port} online={online}")Вывод:
gateway:8080 online=TruePython упаковывает значения справа и присваивает их целевым переменным слева.
primary = "east"
backup = "west"
primary, backup = backup, primary
print(f"Primary: {primary}")
print(f"Backup: {backup}")Вывод:
Primary: west
Backup: east| Цель | Python |
|---|---|
| Создать запись | ("api", "eu") |
| Создать кортеж из одного элемента | ("api",) |
| Прочитать элемент | record[0] или record[-1] |
| Распаковать поля | service, region = record |
| Поменять значения местами | a, b = b, a |
| Заменить неизменяемый кортеж | Создать новый кортеж |
("eu") — это строка, а не кортеж из одного элемента.ValueError.record[1] = "us" вызывает TypeError.