Wyjaśnienie lekcji
Po tej lekcji będziesz potrafić:
Krotki grupują uporządkowane wartości, podobnie jak listy, ale nie można ich zmieniać w miejscu. Nawiasy okrągłe poprawiają czytelność literałów krotek; to przecinek tworzy krotkę, dlatego krotka jednoelementowa wymaga końcowego przecinka: ("eu",).
Indeksy działają tak jak w listach: pierwsza wartość ma indeks 0, a -1 odczytuje ostatnią. Gdy wiesz, ile pól zawiera rekord, rozpakowywanie przypisuje je wszystkie naraz: name, region = record. Python zgłasza ValueError, gdy liczba celów nie zgadza się z liczbą wartości.
Rozpakowywanie pozwala też zamienić dwie zmienne bez oddzielnej zmiennej tymczasowej. W odróżnieniu od listy, record[0] = value zgłasza TypeError: zbuduj nową krotkę, jeśli potrzebujesz zmienionego rekordu.
Indeksowanie krotek używa tych samych pozycji dodatnich i ujemnych co indeksowanie list.
endpoint = ("billing", "eu", 443)
print(endpoint[0])
print(endpoint[-1])Wynik:
billing
443Same nawiasy tylko grupują wyrażenie; przecinek oznacza krotkę jednoelementową.
region = ("apac",)
print(type(region).__name__)
print(len(region))Wynik:
tuple
1Rozpakowywanie czyni pola czytelnymi bez powtarzanych wyrażeń z indeksami.
host = ("gateway", 8080, True)
service, port, online = host
print(f"{service}:{port} online={online}")Wynik:
gateway:8080 online=TruePython pakuje wartości po prawej stronie i przypisuje je celom po lewej.
primary = "east"
backup = "west"
primary, backup = backup, primary
print(f"Primary: {primary}")
print(f"Backup: {backup}")Wynik:
Primary: west
Backup: east| Cel | Python |
|---|---|
| Utworzenie rekordu | ("api", "eu") |
| Utworzenie krotki jednoelementowej | ("api",) |
| Odczyt elementu | record[0] lub record[-1] |
| Rozpakowanie pól | service, region = record |
| Zamiana wartości | a, b = b, a |
| Zastąpienie niezmiennej krotki | Zbudowanie nowej krotki |
("eu") to napis, a nie krotka jednoelementowa.ValueError.record[1] = "us" zgłasza TypeError.