Ursprünglich habe ich es im Kommentar des folgenden Artikels geschrieben, aber ich fand es zu aggressiv, um es in den Kommentar zu schreiben, also habe ich es hierher verschoben. Beherrschen von Typen mit Python [Python 3.9-kompatibel]
Es ist ein bekannter Artikel, der nur religiöse Kontroversen hervorrufen wird.
In letzter Zeit sind die Vorteile der statischen Typisierung (oder die Nachteile der dynamischen Typisierung?) Beliebt geworden, und TypeScript ist populär geworden, und sogar Python kann statische Typprüfungen durchführen. Ich persönlich mache jedoch "unnötiges Tippen" (in einigen Fällen eher "Typen, die sogar schädlich erscheinen") (insbesondere in der statischen Typprüfungsfunktion, die später zur dynamisch getippten Sprache hinzugefügt wurde). Ich habe das Gefühl, dass der Code zunimmt.
Beherrschen von Typen mit Python [Python 3.9-kompatibel] Im Artikel
def add(a, b):
"""Gibt das Ergebnis des Hinzufügens von Argumenten zurück"""
return a + b
Mit einer Form
def add_type(a: int, b: int) -> int:
"""Gibt das Ergebnis des Hinzufügens von Argumenten zurück"""
return a + b
Ein Beispiel wird angezeigt.
In diesem Beispiel sollte der Typ jedoch nicht geschrieben werden ***. Es ist nicht gut, den Typ unnötig anzugeben. In diesem Fall reicht jeder Typ aus, der für die Operation "a + b" sinnvoll ist, und ich denke, es ist ein "schlechter" Programmierstil, int anzugeben. Natürlich verstehe ich, dass das Obige nur ein Beispiel ist, aber ich denke immer noch, dass dieses Beispiel "als Beispiel unangemessen" ist.
In welchen Fällen ist es unpraktisch,> int anzugeben?
Nachdem Sie verstanden haben, dass die Realität mit der idealen Theorie nicht ausreicht, wenn Sie über die ideale Theorie sprechen,
*** Sollte für Schnittstellen programmiert werden, nicht für konkrete Typen ***
Deshalb.
In diesem Beispiel kann die Funktion "Hinzufügen" auf jedes Objekt angewendet werden, das die Eigenschaft (Schnittstelle) hat, die mit dem Operator "+" hinzugefügt werden kann. Natürlich unterscheidet sich die vom "+" - Operator durchgeführte spezifische Verarbeitung in Abhängigkeit von jedem spezifischen Typ (Polymorphismus), aber die "add" -Funktion ist für die "Schnittstelle" programmiert, die als "+" - Operator bezeichnet wird. Daher kenne ich den spezifischen Verarbeitungsinhalt des Operators "+" nicht (oder vielmehr sollte er nicht vom spezifischen Verarbeitungsinhalt des Operators "+" *** abhängen). Deshalb.
In diesem Beispiel sollten Sie nicht an die konkrete Form "int" gebunden sein. Wenn Sie es später in "float" anstelle von "int" ändern möchten, müssen Sie alle Schlüsselwörter "int" im Programm durch "float" ersetzen. Wird sein.
Im Übrigen halte ich es nicht für notwendig, die Argumente der Funktion "add" auf numerische Werte einzugrenzen. Für das Argument der Funktion "add" muss nur eine Schnittstelle mit dem Namen "+" definiert werden, sodass die Funktion "add" die spezielle Methode "str", "list" und sogar "add" definiert. Es ist nichts Falsches daran, eine eigene Klasse zu betreten. Um genauer zu sein, sollte die Funktion "add" *** geschrieben werden, um mit jedem Objekt zu arbeiten, das in erster Linie den Operator "+" hat.
Tatsächlich tippe ich heutzutage in der Welt der statisch typisierten Sprachen (insbesondere in C ++ und Rust) nicht so viel wie möglich (lassen Sie den Compiler automatisch auf den Typ schließen), und selbst wenn ich mich traue, zu tippen, ist es so allgemein wie möglich. Der Programmierstil zum Erstellen eines Typs verbreitet sich.
Andererseits habe ich kürzlich Code gesehen, der in Python eingegeben wurde, aber ich frage mich oft, warum solche "unnötigen Eingaben" gemacht werden. Um ehrlich zu sein, fühlt es sich an, als würden Sie sich "30 Jahre alten C ++ - Code" ansehen. Werden Python-Programmierer in den letzten 30 Jahren des Versuchs und Irrtums (und des daraus resultierenden Paradigmenwechsels) in der statisch typisierten Sprachwelt beginnen? Ich dachte.
Das Schreiben kann durchaus zu religiöser Kriegsführung führen, aber in meiner "Voreingenommenheit" sind Leute, die Python eingeben wollen, diejenigen, die Python (oder C ++ vor 20 bis 30 Jahren) noch nicht kennen. Diejenigen, die bei Java-Kenntnissen stehen geblieben sind), sondern diejenigen, die kürzlich von statisch typisierten Sprachen zu Python gewechselt sind, haben den Eindruck, dass sie Python nur ungern eingeben.