Python wird immer komplizierter

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
BlackJack

Jede ernst zu nehmende Erweiterung des eingebauten BASICs hat auch einen RENUMBER-Befehl mit dem man Zeilen neu durchnummerieren kann, wobei selbstverständlich die Sprungbefehle angepasst werden. So etwas selber zu schreiben ist auch eine gute Übung, ob man das interne Speicherformat von BASIC auf dem C64 verstanden hat. :-)
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

o mein gott!

mein informatik lehrer tut mir immer mehr leid :lol: :lol:

aber gut, wenn ich bedenke was in 10 jahren alles moeglich sein wird...
cp != mv
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dabei sind wir noch gar nicht bei den Lochkarten angekommen. :P
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
tux21b
User
Beiträge: 18
Registriert: Mittwoch 15. Februar 2006, 23:20
Wohnort: Linz.at
Kontaktdaten:

Und noch eine Anmerkung zu Metaklassen, die du auch kritisiert hast. Das Typ/Objekt/Instanz System in Python weicht etwas vom klassischen Ansatz der meisten anderen Programmiersprachen ab und ist deshalb auch nicht so einfach zu verstehen.

Zum einen braucht man Metaklassen aber sowieso eher selten und wenn dann lassen sie sich auch gut verstecken und tragen wesentlich zur besseren Lesbarkeit und Einfachheit des Programms bei. Das beste Beispiel hier sind wohl die Django Model Klassen, welche beim Erzeugen auch gleich alle SQL-Statements anlegen und auführen, aber es gibt auch noch eine Vielzahl von anderen Klassen wo man es vermutlich gar nicht merkt.

Also mir gefällt die Entwicklung bei Python bis jetzt noch sehr gut und hoffe das die Performance von Py3k (genauer gesagt von der CPython Version) auch noch etwas zunimmt bis zum Release.

Gruß
Christoph
[url]http://www.ubuntuusers.de[/url]
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Rebecca hat geschrieben:Dabei sind wir noch gar nicht bei den Lochkarten angekommen. :P
bitte einen Grundkurs!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

War heute im Buchladen und habe mir die dritte Ausgabe von "Programming Python" angesehen, die für Python 2.5 aktualisiert wurde. Das Buch hat stolze 1600 Seiten und ist noch um einige Seiten dicker als Programming Ruby (Pickaxe) :)
Ich glaube ich habe in all den Jahren zusammen nie 1600 Seiten Python-Dokumentation gelesen :D
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

hab das alte hier bei mir rummliegen: 1552 seiten
insofern...


der autor drueckt alles einfach viel zu kompliziert aus
(und schreibt alles in camelCase :evil: )
cp != mv
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Leonidas hat geschrieben:War heute im Buchladen und habe mir die dritte Ausgabe von "Programming Python" angesehen, die für Python 2.5 aktualisiert wurde. Das Buch hat stolze 1600 Seiten und ist noch um einige Seiten dicker als Programming Ruby (Pickaxe) :)
Ich glaube ich habe in all den Jahren zusammen nie 1600 Seiten Python-Dokumentation gelesen :D
das steht hier neben mir auf dem Tisch ... und das ist sooo schwer........ und es past auch nicht in die Handtasche und schon gar nicht mit Notebook zusammen ..... aber gelesen hab ich es noch lange nicht fertig .... :oops:
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Leonidas hat geschrieben:und ist noch um einige Seiten dicker als Programming Ruby (Pickaxe)
Also ist Python jetzt schon komplizierter als Ruby? :)
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Nee, aber man kann mehr mit machen, und das muß halt beschrieben werden :twisted:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sprachtechnisch kann man mit Python wohl weniger machen, aber die Stdlib scheint mir doch etwas umfangreicher zu sein - das will auch alles beschrieben sein. Allerdings habe ich das Buch nicht, wenn ich mir das Inhaltsverzeichnis ansehe scheinen da aber auch ziemlich viele nicht wirklich interessante Themen zu sein. So sind die Kapitel über Tkinter arg lang, und Server Side Scripting sollte wohl aus dem Buch inzwischen entfernt werden.

Wahrscheinlich kommt eben so die große Seitenanzahl zusammen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Thread mal wieder herauf holt.
Muss ja nicht für alles ein neuer aufgemacht werden.

Mir geht es hier in dem Fall um print, da dies unter anderem auch angesprochen wurde.

Wenn ich das richtig verstanden haben, wird print also eine Funktion und kann somit mit:

Code: Alles auswählen

print('variable')
Texte ausgeben?
Was derzeit übrigens auch geht, bzw. sind das dann Listings.
Und genau an dem Punkt komme ich jetzt total durcheinander.
Wenn man

Code: Alles auswählen

print('var1','var2','var3')
eingibt, gibt er ja eine Listing von "('var1','var2','var3')" aus.
Anders als wenn man

Code: Alles auswählen

print 'var1','var2','var3'
schreibt.
Da spuckt er jedes einzeln aus, also ohne Klammern = "var1,var2,var3".

Wie funktioniert dann mit dem neuen print als Funktion dann noch das Listing??
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
BlackJack

Was Du das als "Listing" bezeichnest heisst Tupel. Und Deine Ausgabe für das 2.5er ``print`` ohne Klammern dürfte keine Kommata enthalten.

Ich weiss jetzt ehrlich gesagt nicht so ganz was Du wissen willst. Wenn Du in Python 3.x ein Tupel ausgeben willst, dann musst Du das genau wie in 2.5 einfach angeben.

In 3.0:

Code: Alles auswählen

>>> print('var1', 'var2', 'var3')
var1 var2 var3
>>> print(('var1', 'var2', 'var3'))
('var1', 'var2', 'var3')
In 2.5:

Code: Alles auswählen

In [27]: print 'var1', 'var2', 'var3'
var1 var2 var3

In [28]: print ('var1', 'var2', 'var3')
('var1', 'var2', 'var3')
Da ist abgesehen von einem Klammerpaar kein Unterschied zwischen den beiden Versionen.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Hi Erwin!

Ich vermute du fragst dich, was genau passiert wenn man sowas hier macht (Python 2.5):

Code: Alles auswählen

print arg1, arg2, arg3
Das ist ganz einfach. Die Print-Anweisung gibt nacheinander jedes arg aus, indem es die stringrepresentation (arg.__repr__) des Objektes zurueckgibt. Die Anweisung ist also das gleiche wie zB:

Code: Alles auswählen

print arg1,
print arg2,
print arg3
Das Komma hat in dem Fall den Effekt, dass kein Zeilenumbruch angehaengt wird, nachdem arg ausgegeben wurde.

Solange du Rueckgabewerte hast, kannst du so alles moegliche ausgeben, (fast) ohne auf den Objekttyp achten zu muesen (immernoch Python 2.5):

Code: Alles auswählen

def rueckgabefunktion():
    return "bla", "blub"

print 5, "5", (5,5), [5,5], {"5": 5}, True, False, None, rueckgabefunktion
Ausgabe:

Code: Alles auswählen

5 5 (5, 5) [5, 5] {'5': 5} True False None ('bla', 'blub')
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Tulpel, stimmt.
Bringe die Beiden immer durcheinander.

Stimmt ja.
:oops:
Einfach noch mal Klammern machen.
War wohl derzeit total durcheinander.
Hatte es Heute einfach mal getestet, ob es nicht schon bei 2.5 geht, da kam bei

Code: Alles auswählen

print 'var1'
print('var1')
Beiden das gleiche raus.
Dachte deshalb, dass es bereits mit 2.5 möglich ist.
Inzwischen fiel mir aber ein, dass keins von den Beiden ein Tulpel ist, weil ja ein Komma fehlt:

Code: Alles auswählen

print('var1',)
Hat mich alles leider durcheinander gebracht.
Sorry.


Ob man vielleicht eine Zusammenfassung erstellen kann, über die Veränderungen?
Und zwar im Positiven Sinne.
Wo man also vor allem die Vorteile hervorhebt?
Wäre für mich, der etwas gegen ständigem Wechsel (von einer Version zur nächsten ... ) was hat, sehr hilfreich.
Oder gibt es schon so was auf Deutsch?

Wie sieht es eigentlich mit der Zukunft von 2.5 aus?
Wird es dies dann irgendwann nicht mehr geben?
Oder wird es auch weiterhin zur Verfügung stehen und problemlos auf derzeitige BS und auch auf neuere BS installiert werden können?


edit:
@ nkoehring

Nun, diese Frage stellte sich indirekt zugleich mit der Frage, wie man Tulpel macht, oder umgekehrt (nicht macht).
Bzw. wie print dann auseinander halten soll, was Tulpel ist, und was jeweils einzeln ausgeben werden soll.
Aber das man dann für Tulpel zusätzlich noch mal eine Klammer macht, wäre eigentlich ja das naheligenste gewesen.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Erwin hat geschrieben:Tulpel, stimmt.
Falsch, es hat nichts mit Tulpen zu tun - es heißt Tupel. Und das andere sind nicht Listings oder Arrays sondern Listen.
Erwin hat geschrieben:Ob man vielleicht eine Zusammenfassung erstellen kann, über die Veränderungen?
Und zwar im Positiven Sinne.
Wo man also vor allem die Vorteile hervorhebt?
Es wird ein "What's New in Python 3.0" geben, so wie es für die Versionen davor das auch schon gab.
Erwin hat geschrieben:Wie sieht es eigentlich mit der Zukunft von 2.5 aus?
Wird es dies dann irgendwann nicht mehr geben?
Oder wird es auch weiterhin zur Verfügung stehen und problemlos auf derzeitige BS und auch auf neuere BS installiert werden können?.
Python 2.5 wird es solange geben, solange es die Daten noch gibt, es wird nicht irgendwann mal global implodieren und verschwinden. Die Tarballs von 2.5 wirst du auch sicherlich noch auf zukünftigen Unices kompilieren und nutzen können, die Windows-Versionen werden vermutlich auch in zukünftigen Windows-Versionen laufen. Es wird eben das passieren was 2.3 passiert ist - es wurde von 2.4 ersetzt. 2.5 wird auch ersetzt werden - durch 2.6 und 3.0.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Tupel und Listen.
Hoffe mir passiert so schnell der Fehler nicht noch mal.
Ist ja nicht nur peinlich, sondern Jemand anders übernimmt dass dann vielleicht auch noch falsch.
Leonidas hat geschrieben: Es wird ein "What's New in Python 3.0" geben, so wie es für die Versionen davor das auch schon gab.
Also vermutlich auf Englisch?
Aber je länger ja Python gibt, desto mehr besteht wohl die Chance, dass es übersetzt wird?

Was weiß man eigentlich so vorab?
Gibt es, wenn man mit 2.5 weiter macht, vieles, was man beachten sollte, wenn man den gleichen Code dann für 3.0 verwenden will?

Leonidas hat geschrieben:Python 2.5 wird es solange geben, solange es die Daten noch gibt, es wird nicht irgendwann mal global implodieren und verschwinden. Die Tarballs von 2.5 wirst du auch sicherlich noch auf zukünftigen Unices kompilieren und nutzen können, die Windows-Versionen werden vermutlich auch in zukünftigen Windows-Versionen laufen. Es wird eben das passieren was 2.3 passiert ist - es wurde von 2.4 ersetzt. 2.5 wird auch ersetzt werden - durch 2.6 und 3.0.
Kompilieren?
Geht das auch für Linux? Also für Linux BS?

Insgesamt scheint mir, habe ich meine Frage nicht richtig gestellt.
Versuche ich es anders, zu mal Gewisse Dinge sich wohl scheinbar nicht vermeiden lassen.

Will mal versuchen, zu akzeptieren, dass ich halt auf 3.0 umsteigen muss:
Aber wie mache ich es, oder wie machen das dann Andere, die gerade an einem großen Projekt sind, und dies dann auf Python 3.0 umstellen wollen/müssen?
Gibt es dann Hilfswerkzeuge, die zum Beispiel aus "print 'var1'", dann "print('var1')" machen?

Und wie kommt Ihr vor allem damit zurecht?

Weil für mich ist das nicht nur frustrierend, sondern wenn ich etwas gemachtes wieder machen muss (print-Zeilen neu schreiben) dann ist das für mich ein Rückschritt. Ein Gefühl von, ich komme nie weiter, alles Zeitvergeudung.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Erwin hat geschrieben:
Leonidas hat geschrieben: Es wird ein "What's New in Python 3.0" geben, so wie es für die Versionen davor das auch schon gab.
Also vermutlich auf Englisch?
Aber je länger ja Python gibt, desto mehr besteht wohl die Chance, dass es übersetzt wird?
Die Möglichkeit besteht, aber die vorhergehenden "What's New"-Dokumente waren auch auf Englisch idR leicht zu verstehen. Nur ihre Fülle war ein Problem.
Erwin hat geschrieben:Was weiß man eigentlich so vorab?
Alles was in den PEPs 3000 und folgenden steht.
Erwin hat geschrieben:Gibt es, wenn man mit 2.5 weiter macht, vieles, was man beachten sollte, wenn man den gleichen Code dann für 3.0 verwenden will?
Ja, man sollte beachten, dass man nicht versuchen sollte Code sowohl für 3.0 als auch 2.x zu schreiben.
Erwin hat geschrieben:Kompilieren?
Geht das auch für Linux? Also für Linux BS?
Natürlich. Ich habe mir mein Python auf Gentoo Linux selbst kompiliert, das ist alles überhaupt kein Problem.
Erwin hat geschrieben:Will mal versuchen, zu akzeptieren, dass ich halt auf 3.0 umsteigen muss:
Aber wie mache ich es, oder wie machen das dann Andere, die gerade an einem großen Projekt sind, und dies dann auf Python 3.0 umstellen wollen/müssen?
Gibt es dann Hilfswerkzeuge, die zum Beispiel aus "print 'var1'", dann "print('var1')" machen?
Ja, der Konverter heißt 2to3.
Erwin hat geschrieben:Und wie kommt Ihr vor allem damit zurecht?
Ganz einfach. Code in 2to3 füttern, ggf. Probleme von Hand ausbessern - fertig. Sich über saubereren Code freuen.
Erwin hat geschrieben:Weil für mich ist das nicht nur frustrierend, sondern wenn ich etwas gemachtes wieder machen muss (print-Zeilen neu schreiben) dann ist das für mich ein Rückschritt. Ein Gefühl von, ich komme nie weiter, alles Zeitvergeudung.
Du darfst auch gerne noch jahrelang 2.x nutzen, 3.x wird sich sowieso nicht sonderlich schnell durchsetzen.

Achja, warum guckst du dir nicht Guidos Python 3.0-Talk auf Google Video an? Er erklärt da eine ganze Menge Sachen dazu.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Leonidas hat geschrieben: Die Möglichkeit besteht, aber die vorhergehenden "What's New"-Dokumente waren auch auf Englisch idR leicht zu verstehen. Nur ihre Fülle war ein Problem.
Bei meinem Englisch müsste ich im Vorfeld verdammt viel von der Materie verstehen, um zumindest den Großteil der Wörter und/oder Satz-Stellung richtig zu verstehen.
Deutsch wäre von daher viel hilfreicher für mich.

Leonidas hat geschrieben:
Erwin hat geschrieben:Gibt es, wenn man mit 2.5 weiter macht, vieles, was man beachten sollte, wenn man den gleichen Code dann für 3.0 verwenden will?
Ja, man sollte beachten, dass man nicht versuchen sollte Code sowohl für 3.0 als auch 2.x zu schreiben.
Wollte eigentlich gezielt wissen, welche Wörter man vorerst besser meidet. Wie print z.B..
Allerdings jetzt wo ich von dem 2to3 weiß, scheint mir es einfacher zu sein, den 2to3 dann drüber laufen zu lassen.
Womit sich die Frage erledigt/beantwortet haben sollte.
Danke.

Leonidas hat geschrieben:Natürlich. Ich habe mir mein Python auf Gentoo Linux selbst kompiliert, das ist alles überhaupt kein Problem.
Was für ein Tool hast Du hergenommen?
Ich benutzte als Linux-Distri Ubuntu (Gnome-Destop).
Würde da vermutlich das gleiche Tool laufen?

Leonidas hat geschrieben:Ja, der Konverter heißt 2to3.
Mal sehen, ob ich den finde. Danke.
Heißt der nur 2to3? Kein Py davor, oder ähnliches?

Leonidas hat geschrieben: Du darfst auch gerne noch jahrelang 2.x nutzen, 3.x wird sich sowieso nicht sonderlich schnell durchsetzen.
Aber eines Tage vermutlich schon?
Ich meine, wenn man noch etwas am Anfang steht, ist es doch wohl besser, gleich mit 3 weiter zu machen, oder?
Anderseits ... wen man die neue Funktionen nicht braucht, dann kann man ja jederzeit mit 2to3 ja alles auf 3 umschreiben lassen?
Ich darf nicht so viel darüber nachgrübeln.

Leonidas hat geschrieben:Achja, warum guckst du dir nicht Guidos Python 3.0-Talk auf Google Video an? Er erklärt da eine ganze Menge Sachen dazu.
Dürfte in Englisch sein, oder?
Meine Schwerhörigkeit machte es mir schwer die Muttersprache, also Deutsch, richtig zu lernen. Von Englisch dann ganz schweigen. Und wen das Englisch dann auch noch in Ton ist ... das wird dann nichts. Leider.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Benutzeravatar
paedubucher
User
Beiträge: 30
Registriert: Donnerstag 29. Juni 2006, 18:29
Wohnort: Schweiz
Kontaktdaten:

Vorweg: Ich habe mir diesen ganzen Thread nicht auf den allerletzten Satz durchgelesen, aber das meiste habe ich mitbekommen.

Zunächst möchte ich mal auf ein Vortrag von Guido van Rossum verweisen, der die Änderungen von Python 3000 behandelt. Dieser Vortrag ist schon relativ alt, fasst aber einige Punkte gut zusammen. Hier der Link: Youtube-Video. (EDIT: der Vorposter hat schon darauf verwiesen, hier einfach noch der Link zum anklicken :D )

Betreffend des print-Statements (bzw. der print-Funktion) wird begründet, dass eine Migration zu einem Logging-Framework mit print als Funktion einfacher ist. Der Grund ist einfach, wenn ich print() durch einen Funktions-/Methodenaufruf ersetzen möchte, kann ich einfach "print" in "foo" oder "foo.bar" umbenennen. Ist print jedoch ein Statement, muss ich noch Klammern rund herum beifügen. Dies ist etwas aufwändiger und fehleranfälliger (ich sehe nicht wirklich grosse Probleme, weiss jedoch auch nicht, wie kompliziert man ein print-Statement maximal formulieren kann). Aber ich bin auch ein Befürworter der print-Funktion!
Antworten