Python Bücher oder Tutorials für Programmierer die in Python einsteigen wollen

Gute Links und Tutorials könnt ihr hier posten.
Antworten
speerwerfer
User
Beiträge: 3
Registriert: Samstag 27. Mai 2017, 07:57

Hallo an die versammelten Experten!

Ich bin Softwareentwickler und möchte privat in Python einsteigen. Ich würde gerne zukünftig was mit Kindern/Jugendlichen machen und dazu in einigen Projekten auch den Raspberry Pi nutzen.

Mein Problem: Ich kann ja programmieren (C++, C#, C/SIDE, Perl, ...). Sehr viele Bücher wenden sich an Leute, die das programmieren lernen wollen. Das sind dann leider meist Bücher, die für mich nicht mehr in Frage kommen. Zu meinen Perl Zeiten hatte ich immer die beiden Bücher Perl in a Nutshell und Perl Cookbook auf dem Schreibtisch liegen. Die fand ich ganz hilfreich. Ich muss halt nicht mehr lernen, wie Schleifen funktionieren und was Variablen sind.

Was würdet Ihr empfehlen, wenn man als Programmierer in Python einsteigen will. Vielleicht gibt es ja auch ein brauchbares online Tutorial.

VG
Martin
BlackJack

@speerwerfer: In der Python-Dokumentation gibt es ein Tutorial das einen ganz guten Rundgang durch die Sprache bietet.

Ansonsten wäre ich vorsichtig mit der Einstellung das man ja programmieren kann, und deshalb die Grundlagen nicht lernen braucht. Das führt schnell mal dazu das man in einer anderen Sprache programmiert und nur Python-Syntax verwendet, aber kein idiomatisches Python schreibt. Gerade beim Raspi sieht man öfter mal ”Python”-Quelltext bei dem ziemlich klar ist das da ein C-Programmierer kein Python lernen wollte. Java- und Pascal-Programmierer erkennt man auch ganz gut.

Wie Schleifen funktionieren und was Variablen sind, ist unter Umständen auch nicht so klar wie man das vielleicht denkt.

Python hat beispielsweise keine Zählschleife wie man sie aus C kennt und die es auch in C++, C#, und Perl gibt, sondern nur ”foreach”-Schleifen. Die kennt man in C zum Beispiel gar nicht, und die sollte man in Python auch nicht mit ``for i in range(len(sequence)):`` nachbauen.

Bei Variablen sollte man nicht an Schachteln mit Namen denken wo man Werte hinein tut, denn dieses Bild ist zwar in C richtig, aber in Python falsch.

Objektorientierung funktioniert mit Duck Typing anders als in C++ oder C#. Es gibt keinen Zugriffsschutz, aber leider einen Haufen Tutorials da draussen die das public/private-Konzept mit Gewalt auf Python übertragen wollen.

Und Python bietet einen Haufen funktionaler Syntax und Werkzeuge, eingebaut und in der Standardbibliothek, die man kennen und nutzen sollte.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@speerwerfer: wie BlackJack schon schrieb ist es auch als erfahrener Einsteiger in Python wichtig zu lernen, wie die Grundlagen in idiomatischen Python umgesetzt werden. Für diese Zielgruppe halte ich Introducing Python von Bill Lubanovic für gut geeignet.
speerwerfer
User
Beiträge: 3
Registriert: Samstag 27. Mai 2017, 07:57

Na da sag ich mal "Gut dass ich gefragt habe" :-) - Danke für die Hinweise. Aber wir sind uns schon einig, dass ein ausgebildeter und aktiver Entwickler andere Materialien zum Einstieg in Python braucht, als jemand der noch nie Programmiert hat.

Ich habe nun noch dies hier gefunden: http://shop.oreilly.com/product/0636920042921.do
Das scheint auch online lesbar zu sein: http://python-guide-pt-br.readthedocs.io/en/latest/
Und erscheint wohl in Kürze auch in deutsch: https://www.oreilly.de/book_details.php?masterid=12951

Zielgruppe: Programmierer, Python-Programmierer
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@speerwerfer: Der Hitchhikers Guide gibt dem Praktiker mehr Durchblick. Ansonsten würde ich noch "Fluent Python" von Luciano Ramalho empfehlen - aber erst, wenn die Basics sitzen.
BlackJack

@speerwerfer: Klar würde ich keinen Text der rein für absolute Programmieranfänger geschrieben ist empfehlen. Aber eben schon die Pythongrundlagen. Zum Beispiel kennt Python bei Schleifen und Ausnahmenbehandlung jeweils auch einen ``else``-Zweig, der mir in den ganzen Sprachen die ich vor Python kannte, so noch nicht untergekommen ist.

Wie gesagt, das Tutorial in der Python-Dokumentation sollte man mal durchgearbeitet haben. Wenn man schon programmieren kann, dann geht das entsprechend schneller. Auf der anderen Seite war bei den Sprachen die Du aufgezählt hast, glaube ich keine mit einer interaktiven Shell dabei. Der Umgang damit ist bei Python IMHO auch wichtig, denn dort kann man Code ausprobieren und interaktiv mit Bibliotheken herumspielen um die kennenzulernen, oder wenn man ein Problem damit hat, experimentell herausfinden woran das liegen könnte.

Eine aufgebohrte Python-Shell wie IPython oder BPython sollte man sich da auch mal anschauen.
speerwerfer
User
Beiträge: 3
Registriert: Samstag 27. Mai 2017, 07:57

danke für Eure Rückmeldungen ...
BlackJack hat geschrieben:...
Wie gesagt, das Tutorial in der Python-Dokumentation sollte man mal durchgearbeitet haben. Wenn man schon programmieren kann, dann geht das entsprechend schneller.
...
meinst du dies Tutorial: https://docs.python.org/3/tutorial/index.html
Und ist das hier dann das Übersetzungsprojekt: http://py-tutorial-de.readthedocs.io/de ... index.html
iDexx
User
Beiträge: 2
Registriert: Samstag 10. Juni 2017, 11:25

Hallo an alle,

ich klinke mich mal kurz ein. Hab schon ein wenig erfahrung mit Java und seitdem ich rausgefunden hab dass ich Python auf meinem iPad programmieren kann möchte ich mich jetzt Python widmen. Vorerst nur als Hobby, Abends vor Netflix. :D

In zwei Monaten komm die aktuelle Auflage von "Python von Kopf bis Fuß" raus. Es hat mir schon spaß gemacht mit "Java von Kopf bis Fuß" zu arbeiten. Die rezesionen zu dem Buch sind zwiegespalten, die einen sagen "Super!" die anderen "Nö, voll Doof.". Hat hier jemand schon erfahrung mit der ersten Auflage gehabt und kann mir dieses Buch empfehlen?

Hab zwar jetzt schon einige Bücher da aber die Struktur von der "Kopf bis Fuß"-Reihe ist, meiner Meinung nach, sehr gut gemacht. Deswegen die Frage.
BlackJack

@iDexx: Also ich schaue bei Python-Büchern ja immer zuerst in den OOP-Teil ob sie da grobe Fehler machen, und aus der Sicht finde ich „Head First Python“ nicht gut. Da ist so oft eine Liste als Default-Argument, das hätte mindestens einem Reviewer der Python kann, auffallen müssen.

Zudem ist das Beispiel für Vererbung IMHO schlecht, denn es wird von `list` geerbt, aber nur ein Bruchteil davon tatsächlich verwendet, einiges macht auf einem `Athlete`-Objekt keinen Sinn, und so etwas wie ``+`` erzeugt zusätzlich ”unerwartete” Ergebnisse. Ein `Athlete` *ist* nun mal keine Liste mit Rundenzeiten, sondern ein `Athlete` *hat* eine Liste mit Rundenzeiten. Das ist kein Fall für Vererbung, sondern Komposition. Das Buch rechtfertigt das mit weniger Schreibarbeit, also einzig mit Wiederverwendung von Code, was nicht das Ziel von Vererbung in objektorientierter Programmierung ist, sondern nur ein Nebeneffekt.

Die komische Namenskonvention vor alle Argumente der `Athlete.__init__()` ein `a_` zu hängen ist auch nicht gut. Was soll das? Soll das für „argument“ stehen? Das weiss man doch schon weil es die Argumente der Methode sind. Oder für „athlete“? Das weiss man bereits weil es sich um die `__init__()` von der Klasse `Athlete` handelt.

OOP vermittelt das Buch also falsch.

Ausnahmebehandlung ebenfalls. Es werden Ausnahmen einfach in `print()`-Ausgaben ”umgewandelt” und dann weiter gemacht als wäre kein Fehler aufgetreten. Aufrufer bekommen nicht mit ob die Aktion nun geklappt hat oder nicht, können daraufhin also auch keine Entscheidungen treffen.

Für das Kapitel Webanwendungen wird CGI genommen, was heutzutage keiner mehr verwendet, und was auch komplizierter ist als zum Beispiel Bottle als Mikrorahmenwerk zu verwenden.

Das Mobile App-Kapitel zur Android-Programmierung ist anscheinend schon nicht mehr verwendbar weil sich inzwischen zu viel an den APIs und Werkzeugen geändert hat. Das wäre bei einer Neuauflage mit einem angepassten Kapitel sicherlich auch nach einer nicht all zu langen Zeit der Fall. Für sich schnell entwickelnde Technologien sind Bücher einfach nicht geeignet. Oder zumindest sollte man so etwas nicht in Bücher packen die eine Programmiersprache allgemein vermitteln sollen, denn da hat man zu schnell Kapitel die nicht mehr brauchbar sind.

``return`` schreibt der Autor übrigens als wenn es eine Funktion wäre.
iDexx
User
Beiträge: 2
Registriert: Samstag 10. Juni 2017, 11:25

Danke für die Antwort. Also doch lieber Onlinetutorial. :)
mkay_93
User
Beiträge: 8
Registriert: Donnerstag 22. Juni 2017, 11:43

Hey,
bin relativ neu hier und bringe mir Python gerade selber bei mit dem Buch Python 3 Für Ein- und Umsteiger von bernd KLEIN.

Da ich Einsteiger bin kann ich nicht beurteilen wie gut es für Umsteiger ist aber vlt lohnt sich ja mal ein Blick ins Buch :K

Das ist die Homepage zum Buch ( nicht ganz so ausführlich aber sollte auch reichen)

http://www.python-kurs.eu/kurs.php

Grüße
BlackJack

@mkay_93: Also die Webseiten finde ich teilweise nicht gut, falls sich da nichts verbessert hat. Als das Buch herauskam erinnere ich mich auch noch an die Aussage des Autors das die Seiten nicht aktuell sind. Darum gehe ich mal davon aus das das Buch besser ist und man die Seiten nicht unbedingt als Indikator für die Qualität des Buches nehmen sollte. :-)
mkay_93
User
Beiträge: 8
Registriert: Donnerstag 22. Juni 2017, 11:43

@BlackJack. Ohje okai dann hoff ich mal dass das Buch besser ist :D Aber denke um die Grundlagen zu lernen sollte es vielleicht passen.

Wenn wir schon dabei sind

- gibt es Bücher mit Übungsaufgaben bei denen auch Lösungsvorschläge dabei sind?

- und aktuell benutze ich Spyder für kleinere Programme. Das sollte passen für den Anfang oder?
BlackJack

@mkay_93: Bei Spyder würde ich dringend raten die Programme zum testen nicht in Spyder zu starten sondern ausserhalb, denn Spyder führt erst einmal alles im gleichen Python-Interpreter aus, das heisst Variablen aus vorherigen Programmläufen bleiben erhalten und man kann in späteren Programmläufen darauf zugreifen. Das heisst es kann passieren, dass man auf Namen/Werte zugreift die es eigentlich gar nicht geben dürfte und die bei einem erneuten, sauberen Programmlauf erst zu Problemen führen.

Grundsätzlich würde ich Python-Programm nicht aus IDEs heraus starten. Da besteht immer die Gefahr das die Umgebung die die IDE schafft, subtil anders aussieht als ein tatsächlicher, eigenständiger Programmablauf.
mkay_93
User
Beiträge: 8
Registriert: Donnerstag 22. Juni 2017, 11:43

Okai danke für den Tipp! Das Einfachste wird es dann wohl sein die Datei über die Eingabeaufforderung zu starten? Welche IDE sind denn noch zu empfehlen?
Antworten