Anfänger - Python 2.x oder 3.x?

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.
AngerIsAGift
User
Beiträge: 3
Registriert: Donnerstag 27. August 2009, 00:27

Hallo,

ich hab mich nun hier registriert da ich mir in den Kopf gesetzt hab Python zu lernen da ich momentan etwas viel Freizeit habe. Meine Programmiererfahrung beschränkt sich grob genommen auf C und das auch nicht sehr gut :)

Bevor ich nun anfange irgendwas zu lernen, wollte ich fragen was denn nun mehr Sinn macht, Python 2.x oder gleich 3.x?
Ich nehme auch gerne Empfehlungen für Tutorials entgegen, mit Englisch habe ich überhaupt keine Probleme. Da es aber doch einige verschiedene Tutorials gibt und ich als Anfänger nicht einschätzen kann wie brauchbar die jeweils sind, wäre ich ganz froh wenn mich jemand beraten könnte der Ahnung hat.
Sollten wenn möglich aber keine Bücher sein, die sind mir in der Regel zu teuer^^

Danke schon im Vorraus :)
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Hallo und Wilkommen im Forum,

am besten du schaust dir mal die offiziellen Tutorials (2.6, 3.1) an. Um dir eine Empfehlung für die Version geben zu können, müsstest du uns noch sagen wofür und wann du Python verwenden möchtest. Ansonsten gibts dazu auch schon einige Themen im Forum.

Grüße
Gerrit

Edit (Leonidas): Thread verschoben. Hat in "Links" nichts zu suchen.
amiganer68
User
Beiträge: 18
Registriert: Mittwoch 1. Juli 2009, 14:20

Hallo!

Im Moment dürfte 2.6.2 die aktuell gebräuchlichste Version sein. 3.1 ist ganz neu und nicht 100% Code kompatibel. Um anzufangen würde ich darum 2.6 empfehlen, da auch 99.9% der Module damit laufen.

Die Umstellung auf Python3 wird erst in den nächsten Jahren erfolgen und der Unterschied ist dann für einen Umstieg auch nicht soooooo schwer.

MfG
Christian
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Nein, ganz so schlimm wie amiganer68 es darstellt ist es nicht. PyQt ist beispielsweise auch schon Python3 kompatibel.

Python3 ist weit sauberer zu lernen und IMHO ist der Weg Python3->Python2 nicht schwieriger als andersrum, jedoch muss man nicht zwangsweise auf Python2 zurueckfallen.

Im Unternehmensumfeld ist das allerdings u.U. eine andere Angelegenheit.

Der beste Weg Python zu lernen ist das Tutorial und es danach praktisch anzuwenden gute Python-Buecher (v.a. auf deutsch) sind rar. Aber "A Byte of Python" und "Dive into Python" (beide frei) zaehlen dazu. Wie es da mit der Python3 Version aussieht kann ich allerdings nicht sagen.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@cofi: Was meinst du mit "sauberer zu lernen"?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Es fallen einige Spezialfaelle weg, wie z.b. die new-/old-Style-Klassen oder das ``print``-Statement und dessen Eigenheiten[1] (nun sauber mit der neuen ``print``-Funktion kontrollierbar).

Gleichzeitig lernt man auch direkt Generatoren/Iteratoren/Views kennen und stoesst nicht spaeter darauf.

Nur ein paar Kleinigkeiten die mir direkt einfallen, aber IMHO dazu beitragen das Lernen zu erleichtern.

[1] Man hatte immer min. ein Leerzeichen, will man das vermeiden, muss man auf ``sys.stdout`` ausweichen.
AngerIsAGift
User
Beiträge: 3
Registriert: Donnerstag 27. August 2009, 00:27

Danke für die Antworten :)

Das heißt dann im Klartext es ist eher ne Glaubenssache mit was man anfängt?^^
Ich schätze für 2.6 wird es momentan weit mehr Tutorials geben als für 3.1, oder?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Nein es ist keine Glaubenssache. Der Schritt zwischen den Versionen ist auch nicht so gross, dass es einen Riesenunterschied in der Anwendung macht.

Die Menge der Tutorials ist die gleiche - zumindest was offizielle angeht (daneben sind IMHO nur die genannten Buecher eine Alternative) - wobei es fuer 3.1 eine deutsche Uebersetzung gibt.

Die Frage - die uebrigens schon laenger im Raum steht - ist, was willst du genau damit anfangen?
Lernen, um des Lernens willen? -> Python3
Konkretes Projekt, inklusive Zeitplanung / Third Party Libs benoetigt? ->Python2.6
Andernfalls Python3.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wie wäre es denn einfach mit dem offiziellen Tuturial für Python 3.1? :)

Der wirklich große Nachteil entsteht IMHO erst, wenn man Module nutzen will, die nicht bereits in Python integriert sind. Dort kann es häufig sein, dass Python 3.x noch nicht unterstützt wird. Von 99,9% würde ich dabei aber nicht sprechen.

Eine alphabetische Übersicht der integrierten Module findet sich übrigens hier. Du kannst ja mal die Kurzbeschreibungen durchgucken und solltest dann sehen, ob 3.1 für dein Vorhaben geeignet ist.

Pauschal kann man dir die Antwort wie gesagt nicht geben. Ich finde es nur schade, Anfänger direkt auf die 2.6 zu verweisen und Python 3 damit gewissermaßen "abkacken" zu lassen.
problembär

Was mich an Python 3.x total annervt, ist diese

Code: Alles auswählen

print("Hallo")
-Geschichte.
Warum hat man da nicht DANEBEN noch die gesamte

Code: Alles auswählen

print "Hallo"
-Syntax von Python 2.x erhalten? Ob hinter dem Ausdruck Klammern stehen (Funktion) oder nicht (Statement) könnte der Interpreter doch problemlos erkennen und auseinanderhalten.

Ebenso hätte man NEBEN

Code: Alles auswählen

import tkinter
auch das frühere

Code: Alles auswählen

import Tkinter
gültig lassen können.

Ich meine, es war an diesen wichtigen Stellen absolut unnötig, die Abwärtskompatibilität zu brechen.
An den anderen wahrscheinlich auch. So hat man sich nun ein hausgemachtes Problem geschaffen, ohne dafür zusätzliche Funktionalität zu erhalten.

Ich kann nur hoffen, daß in Python 4.x zusätzlich auch wieder die Syntax von Python 2.x mit unterstützt wird.

Gruß
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich glaube du hast den Sinn von Python3 nicht verstanden. Es war von Anfang an dazugedacht mit der Rueckwaertskompatibilitaet zu brechen, um ein paar von Pythons Jugendsuenden zu bereinigen.

Mich stoert eher, dass die Veraenderungen nicht weit genug gingen.

Die meisten Veraenderungen sind uebrigens mit 2to3 automatisch portierbar, wenn nicht faengt spaetestens die `-3` Flag die Inkompatibilitaeten ab.

An der Funktion-/Statement-Geschichte haengt IMHO weit mehr dran, als nur das simple Keyword, um ehrlich zu sein, ich werde das Statement nicht vermissen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@problembär: Ich hatte bei den Ankündigungen zur Änderung von print in eine Funktion statt einem Statement auch erst Bauchschmerzen. Aber die Vorteile überwiegen imho denn doch.

Sieh es vor allem mal so: Für einen Anfänger werden die Elemente wesentlich klarer, je mehr Konsistenz eine Sprache hat. "print" erinnert nun einmal stark an eine Funktion - da ist es dann alleine schon inhaltlich konsistent, das auch so zu gestalten.

Modulnamen konsequent klein zu schreiben ist ebenfalls eine Frage der Konsistenz. Was ist daran also so schlimm, sich das als Python-Kenner umzugewöhnen? Du kennst Dich ja ansonsten in der Sprache schon gut aus, da ist so was doch ein Klaks!

Nebenbei gibt es dazu bei vielen Design-Entscheidungen interne Faktoren, die eine starke Rolle gespielt haben dürften und die ich als Laie sicherlich gar nicht in der Lage wäre, umfassend zu beurteilen. Insofern muss man "Guido" schon vertrauen und sich erst einmal darauf einlassen - man gewöhnt sich doch viel schneller an Dinge als man denkt (Oder kannst Du noch besser DM und Pfennige auseinander halten als Euros? ;-) )
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Hyperion hat geschrieben:(Oder kannst Du noch besser DM und Pfennige auseinander halten als Euros? ;-) )
Ja.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

problembär hat geschrieben:Was mich an Python 3.x total annervt, ist diese

Code: Alles auswählen

print("Hallo")
-Geschichte.
Warum hat man da nicht DANEBEN noch die gesamte

Code: Alles auswählen

print "Hallo"
-Syntax von Python 2.x erhalten? Ob hinter dem Ausdruck Klammern stehen (Funktion) oder nicht (Statement) könnte der Interpreter doch problemlos erkennen und auseinanderhalten.
Also du findest komplizierte Regeln besser als einfache?
problembär hat geschrieben:Ebenso hätte man NEBEN

Code: Alles auswählen

import tkinter
auch das frühere

Code: Alles auswählen

import Tkinter
gültig lassen können.
Dann definier dir doch eine Tkinter.py, wenn du sie so vermisst.
problembär hat geschrieben:Ich kann nur hoffen, daß in Python 4.x zusätzlich auch wieder die Syntax von Python 2.x mit unterstützt wird.
Ich hoffe dass das blos nicht passiert. Ich hoffe eigentlich dass dort dann auch ``global`` und ``nonlocal`` verschwinden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

BlackVivi hat geschrieben:
Hyperion hat geschrieben:(Oder kannst Du noch besser DM und Pfennige auseinander halten als Euros? ;-) )
Ja.
+1
amiganer68
User
Beiträge: 18
Registriert: Mittwoch 1. Juli 2009, 14:20

Hallo!

Jetzt macht ihr den Frager aber etwas meschugge.

Ich möchte cofi recht geben: Wenn Du kannst, fange gleich mit 3.1 an. Solltest Du aber auf "Third PArty Module" zurück greifen wollen, so kann es sein, das diese noch nicht nach 3.1 portiert sind. Wenn Du also ein Projekt erstellen willst, schau erst nach, ob das "Rad das Du erfinden willst" auch in V3 erstellbar ist, dass also alle abhänigen Module in V3 erhältlich sind.

Ich selber habe geschrieben, was ich geschrieben habe, weil ich gerade ein Projekt erstelle, dass leider mit Modulen arbeiten (muss), die es noch nicht für V3 gibt.

MfG
Christian
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

snafu hat geschrieben:
BlackVivi hat geschrieben:
Hyperion hat geschrieben:(Oder kannst Du noch besser DM und Pfennige auseinander halten als Euros? ;-) )
Ja.
+1
Wo lebt ihr denn, dass ihr ständig noch mit DM-Münzen konforntiert werdet? Also ich bi mir sicher, dass ich da jetzt auf Anhieb Probleme hätte... :-)
AngerIsAGift
User
Beiträge: 3
Registriert: Donnerstag 27. August 2009, 00:27

Da ich Python eher aus Spaß an der Freude lernen will und eigentlich kein konkretes Projekt im Kopf habe, werde ich mich dann nun mal mit Python 3.1 auseinandersetzen :)
Danke für die Antworten.

mfg
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich glaube nicht, dass ich Probleme hätte. Ich sag heute noch gelegentlich "paar Mark fuffzich" oder "hab nur noch Pfennige". Denn Cent klingt ja noch gräßlicher als Euro. Gegen "Groschen" können die auf jeden Fall nicht anstinken. ;) Sagt man seit dem Euro eigentlich noch Heiermann? Das passt irgendwie auch nicht mehr wirklich. :(
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

AngerIsAGift hat geschrieben:Das heißt dann im Klartext es ist eher ne Glaubenssache mit was man anfängt?
Ich finde, dass das Lernen der Syntax an sich noch das Leichteste und Schnellste an der ganzen Sache ist. Erst beim Einsatz von 3rd party Modulen wird's interessant... und da wird die 3.X-er immer noch recht spaerlich unterstuetzt.

Wenn Du Spass an Python schon jetzt haben willst, also auch beim Lernen, wuerde ich die 2.6-er Version empfehlen (evtl. sogar noch die 2.5-er): da stolperst Du nicht immer auf fehlende Module, wenn Du mal was Interessantes basteln willst, das jenseits der Python Standard Library liegt.

Man kann's natuerlich auch anders sehen. Es ist alles eine Frage der persoenlichen Vorlieben beim Lernen.
Antworten