Python - Das umfassende Handbuch

Gute Links und Tutorials könnt ihr hier posten.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Freitag 28. Dezember 2007, 17:37

Auch wenn es schon in einem Thread erwähnt wurde, glaube ich, dass es hier trotdem nochmal rein sollte.

Das Buch ist zum Download unter

http://www.galileocomputing.de/openbook/python/

verfügbar.
mfg

Thomas :-)
BlackJack

Freitag 28. Dezember 2007, 19:22

IMHO: Das Buch ist Müll. Ich habe mit dem OOP Kapitel angefangen und da wird gleich `__del__()` als Destruktor vorgestellt, ohne jegliche Warnung warum man das nicht benutzen sollte, und "private members" mit doppelten führenden Unterstrichen um "private" Daten vor Zugriff zu schützen und sinnlose, triviale Getter und Setter per `property()` um dann darauf zuzugreifen. Argh!

In `12.4 Objektphilosophie` wird gesagt wie toll OOP ist und alles einfacher zu entwickeln und wieder zu verwenden ist. Am Beispiel einer `durchschnitt()`-Methode in einer Klasse, die von `list` erbt und mit `type()` die Elemente überprüft, ob sie `int` oder `float` sind. Doppel-Argh! Von Listen mit `long`- oder `Decimal`-Objekten kann man also damit keinen Durchschnitt bilden. Toll! Und irgendwie ist eine Funktion die den Durchschnitt von *jedem* "iterable" berechnet IMHO wesentlich flexibler wieder verwendbar als diese Klasse.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 29. Dezember 2007, 13:05

Erstaunlich, dass in jedem Thread zu diesem Buch irgendwelche Fehler gefunden werden (auch von mir, also nicht als Kritik gedacht).

Nun scheint Galileo Computing ein sehr netter Verlag zu sein, aber die Bücher sind oft nicht so toll - ich höre auch immer wieder Kritik am Java-Buch.

Was mich immer wundert ist, wer diese Bücher schreibt. Das sind fast immer totale Community-Outsider von denen ich nie gehört habe. Das könnte ein Kritikpunkt sein, denn ich kenne viele Leute in der Community, die wirklich ausreichend Ahnung haben, um so ein Buch zu verfassen.

Oder ist es eine Verlagssache? O'Reilly-Bücher waren früher sehr gut, inzwischen sind nicht mehr alle uneingeschränkt empfehlenswert. Apress scheint aber ganz gute Bücher herauszugeben ebenso Packt Publishing.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Sonntag 30. Dezember 2007, 12:55

Leonidas hat geschrieben:Das könnte ein Kritikpunkt sein, denn ich kenne viele Leute in der Community, die wirklich ausreichend Ahnung haben, um so ein Buch zu verfassen.
Das einige in der Lage sind, heißt nicht das sie das machen. Ich kann jetzt nur für Python sprechen aber mir ist schon öfters aufgefallen das Codebeispiele, Dokumentationen die von irgentwelchen Autoren von Zeitschriften (sei es ix, ct oder Linux-Zeitschriften, alle gleich) sehen in den meißten Fällen entweder so aus, als ob die ihren Code noch nie öffentich gezeigt haben oder ob sie frisch Python gelernt haben um nen Artikel zu schreiben.

Es gibt wirklich nur wenige Python-Bücher die wirklich was bringen, jedoch noch weniger welche die auch bestimmte "Das macht man nicht" - Sachen einhalten. PEPs zum Beispiel, ich (hab nicht alles gelesen) habe bis jetzt noch kein Buch gesehen, welches auch nur im Entferntesten PEP08 umsetzt. Warum nicht?


Was man braucht wird wohl ne gute Community-Aktion sein und nen guten Verleger, oder einfach mal jemand der das Englische Tutorial übersetzt (welches recht gut ist, finde ich).


MfG EnTeQuAk
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 30. Dezember 2007, 14:34

EnTeQuAk hat geschrieben:oder einfach mal jemand der das Englische Tutorial übersetzt (welches recht gut ist, finde ich).
Hat Dinu Gherman mal gemacht, es ist nur inzwischen auf dem Stand von Python 1.5, also etwas veraltet. Aber das aktuelle Tutorial gibt es übrigens auf Papier in Englisch zu kaufen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Sonntag 30. Dezember 2007, 14:41

EnTeQuAk hat geschrieben:Es gibt wirklich nur wenige Python-Bücher die wirklich was bringen, jedoch noch weniger welche die auch bestimmte "Das macht man nicht" - Sachen einhalten. PEPs zum Beispiel, ich (hab nicht alles gelesen) habe bis jetzt noch kein Buch gesehen, welches auch nur im Entferntesten PEP08 umsetzt. Warum nicht?
Wenn noch nicht mal die stdlib PEP 8 vollständig einhält, dann kann man das nur bedingt von Buchautoren fordern.

Bei anderen Sprachen sieht es übrigens nicht wirklich besser aus. Dutzende C Bücher empfehlen gets als Funktion zum Lesen von stdin. Dutzende C++ Bücher machen immer noch '#include <iostream.h>', und Suns Styleguide für Java findet auch nur in den seltensten Fällen Anerkennung bei den Java-Autoren.

Vernünftige C++ oder C (mal abgesehen von Stroustrup und K&R) Bücher zu finden, ist auch nicht wirklich leicht.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Sonntag 30. Dezember 2007, 14:57

lunar hat geschrieben:Bei anderen Sprachen sieht es übrigens nicht wirklich besser aus. Dutzende C Bücher empfehlen gets als Funktion zum Lesen von stdin.
Und genau solche Bücher werden dann von Schule als Lehrmittel verwendet und von Lehrern vergöttert. Smashing the stack against boredom...
lunar hat geschrieben: Vernünftige C++ oder C (mal abgesehen von Stroustrup und K&R) Bücher zu finden, ist auch nicht wirklich leicht.
Ich fand den C++ Primer ganz nett.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
lunar

Sonntag 30. Dezember 2007, 15:12

veers hat geschrieben:
lunar hat geschrieben:Bei anderen Sprachen sieht es übrigens nicht wirklich besser aus. Dutzende C Bücher empfehlen gets als Funktion zum Lesen von stdin.
Und genau solche Bücher werden dann von Schule als Lehrmittel verwendet und von Lehrern vergöttert. Smashing the stack against boredom...
Das ist nicht nur in der Schule so, dass zieht sich hoch bis an die Universitäten. Im Maschinenbaustudium an der "Eliteuni" TU München steht im Skript für Erstsemester Softwareentwicklung "Verwenden sie gets,um eine Eingabe von der Konsole einzulesen". Das lag bei nem Freund auf dem Schreibtisch, als ich das gelesen habe, hätte ich den Professor am liebsten erschlagen.
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Montag 25. Februar 2008, 22:31

Ich muss den Thread nochmal ausgraben. Ich bin zwar kein absoluter Anfänger, aber ich muss noch einiges lernen.

Und ich kämpfe mit genau dieser Problematik. Woher soll man lernen wie es "richtig" ist? Vor allem wenn man sich mit englischen Dokumentationen schwer tut. Man kann eigentlich nur entweder Bücher kaufen oder Tutorials lesen und hoffen das es schon irgendwie stimmt.

Dabei habe ich aber immer wieder das Problem das in drei Beschreibungen für das gleiche Problem drei unterschiedliche Methoden angewandt werden. Woher soll man als Anfänger wissen welche davon "richtig" ist oder ob überhaupt eine richtig und nicht eine vierte die man noch nicht kennt?

Ich hab mich mal an der englischen Doku versucht, bin aber nicht weit gekommen. Wie also sollte man es lernen wenn man sich nichtmal auf solche Bücher wie das von Galileo verlassen kann?
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Montag 25. Februar 2008, 22:56

http://www.amazon.de/Objektorientierte- ... 82661660X/

Ist auf dem Stand von 2.4, das Kapitel über XML ist doof und der benutzt File-Objekte anstatt open und öfter mal sind die Variablen Namen nicht so richtig toll.

Aber ich finds ganz gut, man sollte nur dannach fix PEP8 lesen :D
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 25. Februar 2008, 23:05

burli hat geschrieben:Dabei habe ich aber immer wieder das Problem das in drei Beschreibungen für das gleiche Problem drei unterschiedliche Methoden angewandt werden. Woher soll man als Anfänger wissen welche davon "richtig" ist oder ob überhaupt eine richtig und nicht eine vierte die man noch nicht kennt?
Natürlich, ein Problem hat mehrere Lösungen (außer in Python, wo es immer nur eine gibt *g*) und viele sind ja auch äquivalent. Wenn du dir nicht sicher bist, kannst du als Anfänger natürlich jederzeit erfahrenere Leute fragen, etwa die hier im Forum. Manchmal können sich aus solchen Fragen auch schöne Diskussionen entwickeln und dann haben alle was davon.

Also keine Scheu. Wenn du die Dokumentation gelesen hast (Wie ein Informatiker denken lernen... soll ganz gut sein, außerdem gibt es A Byte of Python auch in Deutsch. Ansonsten solltest du dir wirklich das englische Python-Tutorial ansehen, das zeigt quasi immer den zu bevorzugenden Weg) dann kannst du durchaus Fragen stellen ohne dass dir der Kopf abgerissen wird. ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Montag 25. Februar 2008, 23:22

Das ist doch mal was, danke. Was aber nicht schlecht wäre ist eine Zusammenfassung von den wichtigsten "Verhaltensregeln". Sowas finde ich eigentlich immer recht hilfreich. Gibt es sowas? Und wenn nicht, könnte man sowas nicht mal erstellen? So eine Art "Do's and Dont's" für Python
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Dienstag 26. Februar 2008, 00:05

Und schon geht es wieder los. Ich hab die Texte nur mal grob überflogen und zufällig eine Unstimmigkeit entdeckt.

In PEP8 steht:
Code in the core Python distribution should aways use the ASCII or
Latin-1 encoding (a.k.a. ISO-8859-1). For Python 3.0 and beyond,
UTF-8 is preferred over Latin-1, see PEP 3120.
In der deutschen Übersetzung wird jedoch empfohlen wegen den möglichen Umlauten in Strings oder Kommentaren die UTF-8 Kodierung zu verwenden
#!/usr/bin/python
# -*- coding: utf-8 -*-
print 'Käse!' # kein Problem mehr

Weiterhin hab ich in PEP8 gelesen man soll alle Imports an den Anfang einer Datei stellen. In manchen Fällen wäre es aber sinnvoll wenn Imports je nach Situation auch nicht importiert werden um Ladezeit zu sparen.

Ich weiß das PEP keine zwingenden Vorgaben sondern nur Empfehlungen, aber wie soll man entscheiden wann man die Empfehlungen ignorieren kann?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 26. Februar 2008, 00:15

Welche deutsche Übersetzung meinst du denn? Von PEP8?

Der von dir gepostete Abschnitt bezeichnet ja nur Code, der in die Stdlib soll, also Teil von Python werden soll. Ich kodiere meine Python-Programme generell in UTF-8 und werde das auch so beibehalten, insbesondere da das mit Python 3.0 sowieso bevorzugt wird.

PEPs sind durchaus zwingende Empfehlungen und zwar über die Zukunft von Python. PEP8 ist da sozusagen "nur aus Zufall" drin, weil er eigentlich bezeichnet wie der Code in der Stdlib auszusehen hat. Wie dein Code aussieht ist ihm egal. Aber dennoch ist es sinnvoll sich an PEP8 zu halten, richtig. Ich habe nur eine Ausnahme für mehrere Imports in einer Zeile, das ist alles. Der Rest meines Codes ist ziemlich genau PEP8-konform.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Dienstag 26. Februar 2008, 00:28

Äh, sorry. Die Übersetzung von "A Byte of Python" war gemeint. Seite 21/22

Es sind halt immer diese Widersprüche über die ich stolpere und dann nicht weiß was ich eigentlich machen soll. Prinzipiell kann ich ja programmieren wie ich Lust hab, aber ich will es wenigstens halbwegs vernünftig machen

Edit (Leonidas): Restliche Diskussion nach "Properties und Setters" abgetrennt.
Antworten