Python 2 vs Python 3

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
fail
User
Beiträge: 122
Registriert: Freitag 11. Januar 2013, 09:47

Wieso benutzen fast alle hier im Forum Python 2.x wenn es schon Python 3.x gibt?
Gibt es irgendwelche Nachteile von Python 3.x ? :K :K :K :K
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@fail
Weshalb nimmst Du an, dass "fast alle hier im Forum Python 2.x" verwenden?

Ja, es gibt Nachteile bei der Verwendung von Python 3.
Ja, es gibt Vorteile bei der Verwendung von Python 3.

Wie so oft: Es kommt darauf an... :wink:

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
fail
User
Beiträge: 122
Registriert: Freitag 11. Januar 2013, 09:47

Habt ihr beide Versionen installiert oder konvertiert ihr den Code bevor ihr in bei euch ausführt
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@fail
Was "die" machen, weiß ich natürlich nicht. Ich für meinen Teil starte Pythonskripte, die für Python 2 geschrieben wurden, mit Python 2 und Python 3 Skripte mit Python 3. Oder was meinst Du mit "Code konvertieren"...?

Hmm... ich weiß ehrlich gesagt nicht so richtig, was Deine Frage eigentlich ist. Vielleicht hilft Dir ja die Dokumentation weiter...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

fail hat geschrieben:Habt ihr beide Versionen installiert oder konvertiert ihr den Code bevor ihr in bei euch ausführt
Ich habe Python 2, Python 3 und PyPy installiert. Den Code lasse ich jeweils mit der Python-Umgebung laufen für die er gedacht ist.

Ich habe natürlich alten Code, der nicht 1:1 von Python 2 nach Python 3 übernommen werden kann. Ich versuche da allerdings größtmögliche Nähe herzustellen. Die Verwendung von 2to3 zeigt da einige Ansätze auf. Zusätzlich haben fast alle meine Programme im Header folgende Future-Importe die gewisse Änderungen aus Python 3 vorwegnehmen:

Code: Alles auswählen

from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division
absolute_import sollte ich sicher auch noch mit aufnehmen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ich schreib Python 2.6/7, so dass es mit Python 3.3 kompatibel ist. 2to3 und unicode_literals sind imho eine recht schlechte Idee.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

DasIch hat geschrieben:Ich schreib Python 2.6/7, so dass es mit Python 3.3 kompatibel ist. 2to3 und unicode_literals sind imho eine recht schlechte Idee.
2to3 gibt Hinweise. Ich lasse das nicht vollautomatisch ändernd auf den Code los.

Welche Probleme siehst du mit unicode_literals? Ich empfinde den Umgang damit als sehr handlich.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

/me hat geschrieben:
DasIch hat geschrieben:Ich schreib Python 2.6/7, so dass es mit Python 3.3 kompatibel ist. 2to3 und unicode_literals sind imho eine recht schlechte Idee.
2to3 gibt Hinweise. Ich lasse das nicht vollautomatisch ändernd auf den Code los.
Wie testest du dann dass der Code auf 2.x und 3.x funktioniert?
Welche Probleme siehst du mit unicode_literals? Ich empfinde den Umgang damit als sehr handlich.
Mit unicode_literals machst du dir native strings kaputt. PEP 414 erklärt dies ausführlich.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

DasIch hat geschrieben:
/me hat geschrieben:2to3 gibt Hinweise. Ich lasse das nicht vollautomatisch ändernd auf den Code los.
Wie testest du dann dass der Code auf 2.x und 3.x funktioniert?
Ich passe aufgrund der Ergebnisse von 2to3 den Code unter Python 2 so an, dass er optimalerweise direkt mit Python 3 verwendet werden kann. Wo das nicht möglich ist muss ich den Code in zwei Varianten vorhalten und diese in der jeweiligen Umgebung testen.

DasIch hat geschrieben:Mit unicode_literals machst du dir native strings kaputt. PEP 414 erklärt dies ausführlich.
Was interessieren mich native strings? :mrgreen: Das Handling von WSGI lasse ich mir natürlich von einem Framework abnehmen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

/me hat geschrieben:Ich passe aufgrund der Ergebnisse von 2to3 den Code unter Python 2 so an, dass er optimalerweise direkt mit Python 3 verwendet werden kann. Wo das nicht möglich ist muss ich den Code in zwei Varianten vorhalten und diese in der jeweiligen Umgebung testen.
Ersteres ist ja schon unangenehm.
DasIch hat geschrieben:Mit unicode_literals machst du dir native strings kaputt. PEP 414 erklärt dies ausführlich.
Was interessieren mich native strings? :mrgreen: Das Handling von WSGI lasse ich mir natürlich von einem Framework abnehmen.[/quote]
Wenn du mehr als nur die Überschrift liest, werden einige andere Beispiele genannt die nichts mit WSGI zu tun haben. Das Phänomen tritt zumindest so oft auf, dass man unicode_literals nicht uneingeschränkt empfehlen kann.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Ich verwende 2.7 und neuerdings 3.3. Um Probleme zu vermeiden schau ich immer erst hier nach:

http://py3ksupport.appspot.com
https://python3wos.appspot.com

Und dieselbe Diskussion auf HackerNews:

http://news.ycombinator.com/item?id=4907755
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

DasIch hat geschrieben:Wenn du mehr als nur die Überschrift liest, werden einige andere Beispiele genannt die nichts mit WSGI zu tun haben. Das Phänomen tritt zumindest so oft auf, dass man unicode_literals nicht uneingeschränkt empfehlen kann.
Unter Python 3 hat man dann aber nichts anderes mehr.

Anscheinend tritt im Kontext der von mir verwendeten und geschriebenen Software das Problem nicht auf, das andere mit Default-Unicode-Strings unter Python 2 haben. Wenn ich zudem in der Django-Dokumentation unter Porting to Python 3 die Empfehlung lese: "[Add] from __future__ import unicode_literals at the top of your Python modules – it’s best to put it in each and every module [...]", dann habe ich nicht das Gefühl, dass eine weitgehend nichttechnische Kontroverse zu dem Thema mich von der Verwendung von unicode_literals abbringen sollte.

Für mich überwiegen die positiven Aspekte, alleine deshalb weil für mich keine negativen Aspekte existieren.
lunar

@DasIch Ich kann Deinen Einwand ebenso wenig nachvollziehen wie /me. Native Strings lassen sich völlig unabhängig von "unicode_literals" immer mit "str()" erzeugen. In den seltenen Fällen, in denen native Strings zwingend notwendig sind, reicht diese Möglichkeit vollkommen aus.

Die Notwendigkeit von PEP 414 erschließt sich mir nicht.
BlackJack

@fail: Ich verwende Python 2 weil es immer noch bei vielen Linux-Distrubitionen und Webhostern das Standardpython ist und noch nicht alle Module und Pakete die ich so brauche für Python 3.x zur Verfügung stehen. Pypy und Jython sind ebenfalls noch auf dem Stand von Python 2. Ansonsten sehe ich nicht was mir Python 3 so tolles bringt, dass ich unbedingt jetzt schon wechseln müsste/wollte.

Irgendwie schafft die PSF es seit mehr als zwei Wochen nicht das Wiki wieder an den Start zu bringen (sind die tot‽), darum aus dem Archiv: Python2orPython3.
Zuletzt geändert von BlackJack am Freitag 25. Januar 2013, 19:45, insgesamt 1-mal geändert.
Grund: Dummer Tippfehler. Dank an /me für den Hinweis.
Antworten