Durchsetzung von Funktionsschlüsselwortargumenten in Python

Patricia Arquette
Freigeben: 2024-10-22 12:51:02
Original
812 Leute haben es durchsucht

Enforcement of function keyword arguments in Python

Bevor ich vor ein paar Monaten meine neue Rolle antrat, war es sehr lange her, dass ich das letzte Mal in Python programmiert hatte.

Übrigens habe ich in den letzten Jahren weiterhin in Rollen gearbeitet, die entweder Full-Stack-Javascript oder hauptsächlich Javascript mit ein wenig einer anderen Sprache (zuletzt Go) beinhalteten.

Es hat also Spaß gemacht, meine Muskeln ein wenig in einer anderen Sprache zu trainieren, insbesondere in einer, die so zugänglich ist wie Python.

Eine Funktion der Sprache, die mir gerade gefällt, ist die Durchsetzung von Schlüsselwortargumenten für Funktionen mithilfe der kw_only-Eigenschaft, die im @dataclass-Dekorator zugänglich gemacht wird.

Es wird Code erstellt, der so aussieht:

from dataclasses import dataclass

@dataclass(kw_only=True)
class Person:
    name: str
    age: int
    city: str

person1 = Person("Alice", 30, "New York")
Nach dem Login kopieren

einen Fehler auslösen, da bei der Verwendung von kw_only etwa Folgendes erwartet wird:

from dataclasses import dataclass

@dataclass(kw_only=True)
class Person:
    name: str
    age: int
    city: str = "Unknown"

person1 = Person(name="Alice", age=30, city="New York")
Nach dem Login kopieren

Obwohl der Fehler aufgetreten ist:

TypeError     

Traceback (most recent call last)
Cell In[8], line 10
      7     city: str = "Unknown"

---> 10 person1 = Person("Alice", 30, "New York")

TypeError: Person.__init__() takes 1 positional argument but 4 were given
Nach dem Login kopieren

ist insofern „klar“, als es Ihnen anzeigt, dass zu viele Positionsargumente bereitgestellt werden. Wenn Sie mit kw_only nicht vertraut sind, kann es etwas verwirrend sein, weil es so aussieht, als würden Sie die Funktion richtig aufrufen.

Wenn Sie wie ich über einen Javascript/Typescript-Hintergrund verfügen oder bereits Erfahrung mit Sprachen wie Go oder Rust haben, die dies mithilfe von Strukturen erzwingen, in denen Sie die Argumente in beliebiger Reihenfolge angeben können, solange Sie möchten Da die Eigenschaften der Form des Objekts/der Struktur folgen, wird Ihnen dies vertraut vorkommen und wahrscheinlich eine willkommene Ergänzung zu Ihrem Python-Code sein.

Dies ist besonders nützlich, wenn Sie mit einer großen Anzahl von Argumenten arbeiten, von denen einige möglicherweise optional sind.

Das obige ist der detaillierte Inhalt vonDurchsetzung von Funktionsschlüsselwortargumenten in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage