Was sind einige Merkmale von Python, die es als seine eigene Sprache einzigartig machen? Ich suche nach Eigenschaften, die von gut bis schlecht, von nützlich bis hinderlich, von der Syntax bis zur Verwendung in der Praxis reichen, aber für den durchschnittlichen Entwickler wären nicht undurchsichtige Beobachtungen am nützlichsten.
Ich bin ein Neuling hier, so dass intuitive Dinge möglicherweise erklärt werden müssen .....
Antworten:
Es fällt Ihnen schwer, Funktionen zu finden, die absolut einzigartig sind . Die meisten vorhandenen Sprachmerkmale wurden seit ihrer Einführung in mehr als einer Sprache übernommen. Einige sind möglicherweise seltener, vor allem, weil sie entweder neu und noch im Dunkeln sind oder aus gutem Grund ausgestorben sind. Trotzdem ist es besser, wenn Sie sich Kombinationen von Funktionen ansehen.
Das heißt, mehrere Funktionen von Python sollten für eine relativ einzigartige Kombination sorgen. Zumindest kenne ich keine Sprachen, die in der Ferne populär (und praktisch) sind und deren Funktionsumfang sich größtenteils überschneidet. Wie in den Kommentaren erwähnt, ist Ruby ziemlich nah dran, aber es gibt dennoch zahlreiche Unterschiede.
attr = SomeDataType()
und eine Tonne Code wird automatisch generiert. Ein Beispiel dafür sind Djangos "Modelle" .O(1)
Platz für Zwischenergebnisse folgt oft auf natürliche Weise, nur sehr wenige Aufgaben benötigen tatsächlich alle Elemente auf einmal). Die Zusammenstellung von Daten war noch nie einfacher.O(1)
Platz, sofern Sie die Ergebnisse nicht explizit beibehalten).yield
, was hauptsächlich das Schreiben von Iteratoren (hier Generatoren genannt) viel schöner macht. Sie sind der große Bruder der oben genannten und unterstützen alle Arten von Kontrollabläufen. C # hat etwas Ähnliches mit dem gleichen Schlüsselwort. Esyield
ist aber auch überlastet, um eine begrenzte Art von Coroutinen zu unterstützen (Lua zum Beispiel hat eine ausgefeiltere Unterstützung), die jedoch von klugen Leuten, die an schweren Problemen arbeiten, gut genutzt wurden. Zwei Beispiele aus dem Kopf: Rekursives Descent-Parsing mit Backtracing und ohne Stack-Limit sowie asynchrone E / A (mit praktischer Syntax).for key, value in mapping.items()
), sondern auch alle Iterationen bekannter Länge (ehrlich gesagt, meistens Tupel) in mehrere Variablen packen. Seit 3.x ist es auch praktisch für die Sammlungen von unbekannter Länge , wie Sie ein paar Variablen nehmen einzelne Elemente und eine Aufnahme festlegen können , was bleibt:first, *everything_in_between, last = values
.propery
Objekt einhüllt .quelle
*args
und**kwargs
, schmerzlose Art, Tupel und Dikte auf Parameter abzubilden, usw .Ich denke, das einzige, was Python einzigartig macht, ist die spezielle Kombination der Funktionen, die es bietet. Dies gilt für die meisten Programmiersprachen.
Oder es gibt eine kleine Sache: Ich habe nicht gesehen, wie Python explizit
self
als formaler Parameter an Objektelementfunktionen übergeben wird, die in einer anderen Sprache ausgeführt werden. Es ist eine kleine Sache, und ich verstehe nicht, wie dies wirklich etwas ändert.Aber ich spreche nicht sehr fließend Python, es könnte also Dinge geben, die ich mit Sicherheit vermisse!
quelle
Die automatische Verarbeitung von Dokumentenstrings, um Eigenschaften ihres Besitzers zu werden. Im Allgemeinen machen alle brillanten Introspection-Funktionen von Python diese Sprache zu einer einzigartigen Sprache, von der Fähigkeit, help () zu verwenden, bis hin zur Fähigkeit, sie
__doc__
als erstklassige Eigenschaft eines Objekts zu verwenden. Beispielsweise:Weitere nützliche Funktionen zur Selbstbeobachtung:
quelle
Generator Expressions
input()
Lassen Sie mich erklären, dass ich (bisher) keine Sprache gesehen habe, in der Sie einer Anweisung, die etwas druckt, einen Wert zuweisen können. Es ist wie bei Rubyprint/gets
, aber mit einem Wert, der dem Ausdruck zugewiesen ist, anstelle von:print "Foo" bar = gets
yield
ordereddict, namedtuple, array, list, tuple, dictionary
quelle
Die Sache ist, Python gehört zu den wenigen Sprachen mit extrem geringem syntaktischen Aufwand, was ihm enorme Ausdruckskraft verleiht: Listen- / Mengen- / Diktierverständnisse, Ausbeute, Dekoratoren, Auswertung, Metaklassenprogrammierung, Selbstbeobachtung, die optimierten eingebauten Datenstrukturen (Listen, diktiert, setzt), all diese Dinge verschwören sich auf eine sehr nette Art und Weise, um Ihnen (dem Entwickler) die Möglichkeit zu geben, Ihre Gedanken in prägnantem und elegantem Code fast so schnell auszudrücken, wie Sie denken können. Ich kann mir keine andere Sprache vorstellen, in der diese tollen Funktionen zusammenkommen.
quelle
Ich würde sagen, es wird Einrückung verwendet, um if-Anweisungen und Schleifen einzuschließen. Habe das in keiner anderen Sprache gesehen.
Ich denke, es ist sehr praktisch, weil es erheblich schwieriger ist, Python-Code zu verschleiern!
Es scheint auch ordentlich Zeile für Zeile zu funktionieren, mit Ausnahme von Funktionen, und es kann auch als solches interpretiert werden, was nett ist.
quelle