[Python-de] Python Einführung - Bitte um Feedback

Stefan Schwarzer sschwarzer at sschwarzer.net
Fr Mär 10 03:41:06 EST 2017


Hi Thomas,

sorry für das etwas späte Feedback.

On 2017-03-08 21:52, Thomas Güttler wrote:
> ich habe meine Python Einführung überarbeitet:
> 
>   http://thomas-guettler.de/vortraege/python/einfuehrung.html
> 
> Ich würde mich über Hinweise und Verbesserungsvorschläge freuen.

Erst mal finde ich es erfreulich, dass du nun endlich Python 3
in den Vordergrund stellst. :-)

Einige Links in der Inhaltsübersicht enthalten (mit
unterstrichene) Leerzeichen vor dem eigentlichen Text.

Statt "während dem Studium" sollte es "während des Studiums"
heißen, denke ich.

In "Die Entwicklungsgeschwindigkeit ist heutzutage wichtiger
als die Ausführungsgeschwindigkeit" würde ich ein "meistens"
ergänzen: "meistens wichtiger als ...".

Die Verwendung von Leerzeichen um Operatoren und das
Gleichheitszeichen in Zuweisungen wäre meines Erachtens
leserlicher (und konform mit PEP 8). Allgemein finde ich,
dass du ein paar mehr Leerzeichen spendieren könntest, zum
Beispiel zwischen "#" und dem Kommentar-Text.

Zu deinem Beispiel "Ist das eine Zeichenkette?":
`basestring` gibt es in Python 3 nicht mehr. Du möchtest
vermutlich `str` verwenden.

Was meinst du mit "wunderschön" gegenüber "hässlich" in Bezug
auf Zeichenketten/Bytes? Ob man das eine oder andere
verwendet, hängt vom Anwendungsfall ab.

Die Angabe eines Encodings am Anfang der Datei ist bei
Python 3 nicht mehr notwendig, solange das Encoding UTF-8
ist.

`dict.items()` liefert in Python 3 keine Liste mehr, sondern
ein Iterator-ähnliches Objekt, das sich in einer
`for`-Schleife verwenden lässt.

Ich weiß nicht so recht, ob die Angabe von "Null-Pointer"
für `None` eine gute Idee ist. Ich würde das weglassen.

In "Flusssteuerung" (besser "Fluss-Steuerung"?) kannst du
`%d` statt `%s` verwenden, da du durch die Anwendung von
`int` schon weißt, dass `i` ein Integer ist.

Unter "Funktionen" weißt du auf "Call by assignment" hin.
Die Semantik von "Call by assignment" deckt mit ab, was du
danach zu "Call by value" und "Call by reference" sagst. Ich
finde die Verwendung der beiden letztgenannten Begriffe im
Zusammenhang mit Python eher unglücklich. Die Zuweisung hat
in Python (unabhängig von Funktionsaufrufen) eine Semantik,
die man ohnehin verstehen muss.

Zum Tipp, am Ende eines Programms, `sys.stdin.readline`
einzufügen: Würde es `input()` (`raw_input` in Python 2)
nicht genauso tun?

Ich würde den Rückgabewert von `io.open` nicht mit `fd`
bezeichnen, sondern mit `fobj`. `fd` ist eher angemessen für
"C-artige"-Dateihandles, wie sie an einigen Stellen im
`os`-Modul verwendet werden.

In "Externe Bibliotheken": "vorraussetzen" -> "voraussetzen"

Ich finde, man sollte sich mit dem Debugger `pdb` auskennen.

Ich würde "PyCharm" nicht als "Editor" bezeichnen.

Das Beispiel für `property` finde ich nicht glücklich.
Gerade für sowas würde/sollte man gerade nicht eine Property
verwenden. Bei vermeintlichen Attribut-Zugriffen (was die
API nahelegt), erwartet man nicht, dass bei wiederholten
Aufrufen andere Werte zurückgeliefert werden. Typische
Anwendungen für `property` wären eher "gecachete" Werte.

Unter "Spaßbremse": Ob man Daten in einer Datenbank
speichert/speichern sollte, hängt von der konkreten
Anwendung ab. Manchmal sind einfache Textdateien oder
`ini`-Dateien angemessener.

Der Einsatz von Jenkins ist für kleinere Projekte, erst
recht für einen einzelnen Entwickler, vermutlich
übertrieben.

Soweit erst mal mein Feedback! :-)

Viele Grüße
Stefan


Mehr Informationen über die Mailingliste python-de