Frage

Ich habe vor kurzem haben einige Web-Design als Hobby mit einer Hauptmotivation, um interessante Dinge. Es war sicherlich schön Python zu lernen, aber ich fand es heraus war nur eine große Python zu spät Rewrite, also musste ich beide Python 3 und 2,6 im Wesentlichen lernen.

ich ein Neuling bin, also würde ich Menschen gerne teilen, was denken sie die Stärken / Schwächen von Python 3 sind aus der Perspektive derer, die Endnutzer tun Programmierung statt Sprachdesigner. Meine Frage wäre, was die Leute auf den Punkt tatsächlich zu mögen zu verwenden, oder meidet als unproduktiv oder unpythonic zu sein.

Für mich with Aussage ist definitiv ein Pluspunkt, während print Betreiber brechen Minus ist auf jeden Fall.

Klarstellung bearbeiten : Es gibt viele Stellen, die sich fragen, ob eine Python 2 oder 3 lernen sollte oder ob es einen Unterschied. Ich sehe meine Frage ist anders. Das Feedback von Menschen, die aus irgendeinem Grunde der Verwendung die Wahl Python 3, aber vielleicht eine Meinung haben, was besser funktioniert, was nicht

Eine weitere Klarstellung : Es wurde in den Antworten darauf hingewiesen, dass with auf 2 zurückportiert wird *. Apologies.

War es hilfreich?

Lösung

Nun ein starker Punkt ist die Klärung zwischen Bytes und String. Wie oft in Ihren kurzen Python Erfahrungen haben Sie mit dem unklaren UnicodeDecodeError und UnicodeEncodeError verwirrt gewesen? Wenn Sie noch nie gegen bytestrings Probleme mit Unicode hatten, gut stehen die Chancen, dass Sie eine ascii-only Sprache verwenden, (englisch;)), aber dies ist in der Regel das Konzept, das die härteste ist für Anfänger zu erreichen. (Übrigens, wenn Sie immer noch verwirrt sind, Link für Python 2.x helfen sollten )

Ich glaube wirklich, dass diese Unterscheidung zwischen str und Bytes, eine der Stärken von Python3.0 ist. Lesen Sie PEP358 für die formale Beschreibung und die diveintopython Klasse für mehr Endanwender etwas ausgerichtet. Diese neuen Feature Kräfte Entwickler pflegen eine klar Unterscheidung zwischen Unicode-Objekten und Byte Objekte, die in einer bestimmten Codierung codiert sind. Ich glaube, dass diese Änderung Neulinge helfen leichter, den Unterschied zwischen den beiden Strukturen zu verstehen, und werden erfahrene Entwickler, die mit gesunden Programmiermethoden helfen.

Aber natürlich diese Änderung hat seine eigenen Unbequemlichkeiten: Portierung 2.x-Anwendungen ziemlich schwierig ist, und diese str + Unicode auf str + Bytes Änderung ist die nervigste zu ändern, wenn Sie nicht bereits eindeutig Trennung Unicode und Byte-Strings in Ihrem 2.x-Code. Ärgerlich, aber lange gebraucht.

Diese brechen Änderungen aussehen zu viele Benutzer ärgerlich, und ... sind ärgerlich für wichtige librairies / Lösungen zu implementieren. Die aktuelle Kraft von Python2.x ist die zahlreichen Anwendungen von Drittanbietern / Module: sondern weil es manchmal nicht-trivial zu Port Python3 ist, diese Drittanbieter-Anwendungen werden einige Zeit portiert werden müssen (und weil 2.x noch ist lebendig, müssen diese Anwendungen zwei Versionen erhalten: eine Ziel-Clients auf 2.x und eine auf 3.x ... teure Wartung) Für das nächste Jahr, die Zahl der vollwertigen Anwendung läuft Python3 wahrscheinlich recht wird niedrig, wegen der geringen Anzahl von Python3-kompatibelen dritten. Aber noch einmal, ich diese brechen Änderungen stark unterstützen: Sie haben lesen Sie die Monkey, Banane, Python (3) und Feuerwehrschlauch tale ? ;)

Andere Tipps

Ich verwende Python nicht 3 „in Produktion“, noch nicht, aber mit ihm in Herumspielen habe ich, dass print eine Funktion eine hervorragende Idee ist, gefunden ist - zum Beispiel, kann ich es einfach in einem lambda setzen jetzt , wo in 2. * muss ich sys.stdout.write("%s\n" % foo), ein bisschen crufty verwenden. Plus, die Syntax für solche Verbesserungen wie eine Ausgabedatei unterscheidet sich von sys.stdout Verwendung oder die endgültige \n Entfernen ist so viel besser lesbar als Python 2. * 'S!

BTW, with ist auch in der letzten Python 2. * Versionen, es ist nicht ein Python. 3 - exklusiv

Ich denke, alles, was sie tat das Beste war, auf lange Sicht. Sie nehmen viele der veralteten Möglichkeiten, Dinge zu tun, damit die Durchsetzung „Es gibt nur einen Weg, um es zu tun“ und die zunehmende Konsistenz. Auch die with Aussage ist genial.

Das offensichtliche Problem mit der Verwendung von Python 3 ist der Mangel an Unterstützung für viele [große] Bibliotheken gibt (wie Django). Wenn keine Ihrer Bibliotheken mit Python brechen 3, gibt es keinen Grund, es nicht zu benutzen.

Ich mag Wörterbuch Verständnis:

{k: v for k, v in stuff}

Und erweitert iterable Auspacken :

(head, *rest) = range(5)

Das ist wirklich subjektiv. Python3.x ist sicherlich eine Verbesserung gegenüber 2.x. Es enthält lang erwartete Veränderungen wie:. Wörterbuch Comprehensions ordnete Wörterbuch, leistungsfähigeren String Formatierung ... etc Nicht cleaner Bibliothek zu erwähnen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top