Heim >Backend-Entwicklung >Python-Tutorial >Verbessern Sie die Klarheit des Codes mit benannten Python-Tupeln
Pythons Sammlungsmodul verfügt über eine Funktion namens „Namedtuple“. Ein „Namedtuple“ ist ein Tupel mit benannten Elementen, um den Code ausdrucksvoller zu machen. Genau wie ein Wörterbuch in Python ermöglicht uns ein „Namedtuple“ den Zugriff auf Elemente mithilfe der Mitglieder des Tupels anstelle des Index.
Pythons Sammlungsmodul verfügt über eine Funktion namens „Namedtuple“. Ein „Namedtuple“ ist ein Tupel mit benannten Elementen, um den Code ausdrucksvoller zu machen. Genau wie Wörterbücher in Python ermöglicht uns „Namedtuple“ den Zugriff auf Elemente mithilfe der Mitglieder des Tupels anstelle des Index.
Um ein benanntes Tupel zu erstellen, müssen wir die Funktion „namedtuple“ aus dem Collections-Modul verwenden.
from collections import namedtuple # Define a employee tuple that has fields id, name and location. Employee = namedtuple ('Employee', 'id name location') # Create instances of Employee employee1 = Employee (id=10, name='John Doe', location='Atlanta') employee2 = Employee (id=11, name='Mick', location='Dallas')
„Namedtuple“ bietet einen dualen Mechanismus für den Elementzugriff. Erstens kann auf Elemente über Attributnamen zugegriffen werden, und der zweite Mechanismus verwendet die traditionelle numerische Indizierung.
print(f"{employee1.name} - {employee1.location}") # John Doe - Atlanta print(f"{employee2.name} - {employee2.location}") # Mick – Dallas
Auf Elemente kann auch über numerische Indizes zugegriffen werden.
print(f"{employee1[1]} - {employee1[2]}") # John Doe - Atlanta print(f"{employee2[1]} - {employee2[2]}") # Mick – Dallas
Unveränderlichkeit ist eine grundlegende Eigenschaft von „Namedtuples“, die von regulären Tupeln geerbt wird. Dies bedeutet, dass der Wert eines Felds, sobald er während der Erstellung festgelegt wurde, nicht mehr geändert werden kann.
try: employee1.name = 'David' except AttributeError as e: print(f"AttributeError: {e}") # AttributeError: can't set attribute
„Namedtuple“ bietet nicht nur eine saubere und lesbare Möglichkeit, Daten zu strukturieren, sondern stellt auch einige nützliche Methoden bereit, die die Funktionalität von „Namedtuple“ verbessern.
a) _asdict(): Die Methode _asdict() gibt benannte Tupel in Wörterbuchform zurück und bietet so eine bequeme Möglichkeit, „Namedtuples“ in ein Format zu konvertieren, das mit anderen Datenstrukturen kompatibel ist.
employee1._asdict() # {'id': 10, 'name': 'John Doe', 'location': 'Atlanta'}
b) _replace(): Die Methode _replace() erstellt eine neue Instanz von „Namedtuple“, wobei die angegebenen Felder durch neue Werte ersetzt werden. Dieser Ansatz ist entscheidend, um die Unveränderlichkeit aufrechtzuerhalten und gleichzeitig Änderungen zu ermöglichen.
employee1_modified = employee1._replace(location='DFW') employee1_modified # Employee(id=10, name='John Doe', location='DFW')
c) _make(): Die Methode _make(iterable) erstellt eine neue Instanz von „namedtuple“ aus einem iterierbaren Objekt. Beispielsweise können wir mit der Methode _make() ein Namedtuple aus einer Liste erstellen.
employee_list = [21, 'Bob','Gallup'] Employee._make(employee_list) # Employee(id=21, name='Bob', location='Gallup')
Durch den Entpackvorgang ermöglichen Ihnen Pythons „Namedtuples“, ihre Werte einzelnen Variablen in einer einzigen, prägnanten Anweisung zuzuweisen.
id, name, location = employee1 print(f"id: {id}, name: {name}, location:{location}")
Konvertieren Sie „Namedtuples“ in verschiedene Datenstrukturen
Sie können den list()-Konstruktor verwenden, um benannte Tuples in eine Liste zu konvertieren. Hier ist ein Beispiel:
list(employee1) # [10, 'John Doe', 'Atlanta']
Sie können ein benanntes Tupel mit der Methode „_asdict()“ in ein Wörterbuch konvertieren, die ein OrderedDict zurückgibt, das Sie in ein reguläres Wörterbuch konvertieren können. Hier ist ein Beispiel:
dict(employee1._asdict()) # {'id': 10, 'name': 'John Doe', 'location': 'Atlanta'}
Lesbarkeit: „Namedtuples“ machen den Code lesbarer, indem sie Elementen aussagekräftige Namen geben, wodurch der Aufwand eines indexbasierten Zugriffs entfällt.
Mutation: Wie normale Tupel sind „Namedtuples“ unveränderlich. Sobald es erstellt wurde, kann sein Wert nicht mehr geändert werden.
Speichereffizienz: „Namedtuples“ sind speichereffizient und nehmen weniger Platz ein als entsprechende Klassen. Es ist wichtig zu beachten, dass die mit Namedtuples erzielte Speichereffizienz häufiger in Szenarien mit einer großen Anzahl von Instanzen oder bei der Arbeit mit großen Datensätzen auftritt.
Leichte Datenstruktur: Ideal zum Erstellen einfacher Klassen ohne benutzerdefinierte Methoden.
Datenspeicherung: Praktisch zum Speichern strukturierter Daten, insbesondere wenn keine vollständigen Kurse erforderlich sind.
API- und Datenbankdatensätze: Wird verwendet, um von der Datenbank zurückgegebene Datensätze oder von der API empfangene Daten darzustellen.
„Namedtuple“ in Python ist ideal für Szenarien, die einfache, unveränderliche Daten Strukturen mit benannten Feldern erfordern, wie z. B.
Konfigurationseinstellungen: Verwenden Sie „Namedtuple“, um Konfigurationseinstellungen mit benannten Feldern für Klarheit und Benutzerfreundlichkeit darzustellen.
Datenbankdatensatz: „Namedtuple“ kann einen Datenbankdatensatz darstellen und so klarstellen, welches Feld welcher Spalte in der Tabelle entspricht.
Befehlszeilenanalyse: Verwenden Sie „Namedtuple“, um analysierte Befehlszeilenparameter zu speichern und so eine klare Struktur für Eingabeparameter bereitzustellen.
Benannte Konstanten: „Namedtuple“ kann zur Darstellung benannter Konstanten im Code verwendet werden und bietet so eine klare und lesbare Möglichkeit, konstante Werte zu definieren.
„Namedtuples“ zeichnen sich in diesen Szenarien dadurch aus, dass sie Klarheit, Lesbarkeit und Unveränderlichkeit bieten, was sie zu einem wertvollen Werkzeug für prägnant strukturierte Daten macht.
Das obige ist der detaillierte Inhalt vonVerbessern Sie die Klarheit des Codes mit benannten Python-Tupeln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!