PEP 8

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.
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Hallo zusammen,

mir ist immer wieder mal aufgefallen, dass manche Leute keine Abstände bei einer Zuweisung machen.

Bsp aus dem Wiki:

Code: Alles auswählen

>>> process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Hat sich hier ein "Fehler" eingeschlichen oder nicht.
Ich will nicht klugscheissen, sondern frage das ernsthaft, da ich solche Dinge immer wieder auch bei den Profis hier sehe.

LG

rolgal_reloaded
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Zu Keyword-Argumenten sagt PEP 8:
- Don't use spaces around the '=' sign when used to indicate a
keyword argument or a default parameter value.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

birkenfeld hat geschrieben:Zu Keyword-Argumenten sagt PEP 8:
- Don't use spaces around the '=' sign when used to indicate a
keyword argument or a default parameter value.
Ok, dann werde ich das mal gleich bei mir ausbessern :D

Etwas verwirrend, einmal schon und dann wieder nicht, eine Idee warum das so ist?

LG

rolgal_reloaded
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Ist ein bißchen auch Geschmacksfrage und natürlich einem Abstimmungsprozess geschuldet - starre doch mal auf Deinen Code und frage Dich was mehr Übersicht gibt, wenn Du es so oder anders machst.

Gruß,
Christian
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Für mich fühlt es sich "natürlich" an, darum hab ich es nie in Frage gestellt.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

CM hat geschrieben:Ist ein bißchen auch Geschmacksfrage und natürlich einem Abstimmungsprozess geschuldet - starre doch mal auf Deinen Code und frage Dich was mehr Übersicht gibt, wenn Du es so oder anders machst.

Gruß,
Christian
Eigentlich hätte es mir auch ohne Frage oder Blick in die Doku auffallen müssen.

Idle zeigt es ja normalerweise.

Für den Unterricht ist es vielleicht besser man entscheidet sich für eine Variante, sonst kommt ein schönes Durcheinander raus, so wie ich meine Pappenheimer kenne:-))

LG

r_r
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Das halte ich für keine gute Idee, dann lernen sie es ja falsch und kriegen in der Python-Welt auf den Deckel, wenn sie Code veröffentlichen ;)

Ich finde es aber auch so richtig und intuitiv, wie PEP 8 es vorschreibt. Wenn diverse Dokumentationen, Tutorials und Codebeispiele es auch so machen, lernt man es auch. Im Übrigen kenne ich das aus der PHP-Welt auch so, von daher kann es nicht sooo abwegig sein.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Y0Gi hat geschrieben:Das halte ich für keine gute Idee, dann lernen sie es ja falsch und kriegen in der Python-Welt auf den Deckel, wenn sie Code veröffentlichen ;)
Zumindest in der deutschen Python-Welt. Manche Leute scheinen mir hier etwas zu fixiert auf Formalia zu sein...

Sicher, wenn ich Code in die Finger kriege, wird der auch erst mal PEP8-konform formatiert. Aber jemandem als ersten (und einzigen) Kommentar auf sein Programm mitzuteilen, dass er ihn doch gefälligst PEP8-gerecht schreiben muss, finde ich nicht nett, vor allem wenn es sich um Kleinigkeiten handelt.

(Grausamkeiten wie 160 Zeichen lange Zeilen oder übermäßiges Benutzen von mehreren Anweisungen pro Zeile natürlich ausgenommen...)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Y0Gi hat geschrieben:Das halte ich für keine gute Idee, dann lernen sie es ja falsch und kriegen in der Python-Welt auf den Deckel, wenn sie Code veröffentlichen ;)
Du kannst gern die ganze Unterrichtszeit dafür verwenden den "=" Operator an jeder Stelle entsprechend auszubessern
:D

Ich sorge lieber mit netten Beispielen für entsprechende Impulse - mehr ist nämlich bei uns nicht drin - denn die sich mit Python mehr beschäftigen wollen und werden, werden früher oder später sich auch um eine immer exatere Form bemühen.

Soll natürlich nicht heissen, dass sie schreiben dürfen wie sie wollen.
Aber in dem Fall ist mir lieber sie machen entweder immer das Eine oder das Andere.

Ist schon aufwendig genug sie von sowas abzubringen:

Code: Alles auswählen

>>> zahl= 45
>>> zahl =45
Folgendes wurde ein richtiger Klassiker in dem Jahr:

Code: Alles auswählen

>>>raw_input () 
Nachstehende Kombination springt einem natürlich auf die Netzhaut und trampelt sie beinahe schmerzvoll kaputt:

Code: Alles auswählen

>>>eingabe= raw_input ()


LG

rolgal_reloaded
BlackJack

Du musst Dir die Arbeit doch gar nicht machen. Einfach `pylint` drüber laufen lassen. Kann man auch nach eigenen Vorlieben und Richtlinien konfigurieren. Ausserdem könntest Du es den Schülern an die Hand geben, dann können sie ihren Quelltext auch selbst schon einmal nach Problemen, möglichen Fehlerquellen und Konventionen durchgehen.
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

@BlackJack.

Ich kenne pylint nicht. Ob es von deiner Beschreibung her für die konkrete Situation, die ich meinte, ideal ist kann ich daher auch nicht sagen.

Man geht halt oft durch die Reihen, schaut wie es ihnen mit einer Aufgabe geht und dann reagiert man halt sofort, wenn man etwas sieht, vor allem wenn mann es ihnen schon zum xtenmal gesagt hat.

Aber der Tipp ist interessant, das sehe ich mir sicherlich an.

@edit: geht nur mit PyDev? Wer überredet mir meinen Admin das überall zu installieren :?:

Danke!

LG

rolgal_reloaded
BlackJack

`pylint` ist ein eigenständiges Programm.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

rolgal_reloaded: Wichtig finde ich, dass *du* saubere Beispiele lieferst. Denn PEP 8 ist auch ein Anliegen, dass der Code lesbar ist - und das soll er für deine Schüler ja schließlich sein.

Dass mancher es dann beim Nachbauen nicht so genau nimmt, scheint der Normalfall zu sein. Umso mehr ecken die Leute dann leider auch an, wenn es um Whitespace-deklarierte Blocks in Python geht.

Ich *persönlich* bin der Auffassung, man sollte Code sauber und genau schreiben. Wer bei der Formatierung schlampt, schlampt womöglich auch bei dem was er implementiert. Letztlich soll Code auch gelesen werden - laut Studie XY ja auch Z mal öfter als er geschrieben wird - und da ist uneinheitliche und/oder schlechte Formatierung hinderlich. Genauso erwarte ich, dass Bücher, die ich lesen möchte, nicht vor Fehlern strotzen - denn das hindert meinen Lesefluss ebenfalls.

BlackJacks Idee mit PyLint oder was es da noch gibt (pyflakes, ...?) ist gar nicht so schlecht. Du könntest ja den Code deiner Schüler damit validieren lassen und wer einen positiven Report bekommt, kann ja mit einem Bienenstempel im Fleißheftchen belohnt werden (oder was da so angesagt ist).
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Y0Gi hat geschrieben: BlackJacks Idee mit PyLint oder was es da noch gibt (pyflakes, ...?) ist gar nicht so schlecht. Du könntest ja den Code deiner Schüler damit validieren lassen und wer einen positiven Report bekommt, kann ja mit einem Bienenstempel im Fleißheftchen belohnt werden (oder was da so angesagt ist).
Die Idee ist auf jeden Fall gut, keine Frage.
Wenn sich die Anwendung im Unterrichtsprozess leicht integrieren lässt, dann ist das eine super Sache.

Ansonsten verhält es sich mit der Diskussion rund um PEP 8 ähnlich wie mit den Diskussionen rund um div. Beispiele für den Unterricht, die ich besonders intensiv mit BlackJack geführt habe.

Und zum Vergleich mit dem Buch:

Nicht alles was hinkt ist ein Vergleich :D

LG

rolgal_reloaded
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

veers hat geschrieben:Falls es nur um PEP 8 geht:
http://trac.browsershots.org/browser/tr ... p8/pep8.py
:D
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

rolgal_reloaded hat geschrieben:Und zum Vergleich mit dem Buch:

Nicht alles was hinkt ist ein Vergleich :D
So 'n Totschlagargument ist ja auch nicht gerade differenziert ;)
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Wichtig ist doch erstmal, dass die Leute Spass am Programmieren haben. Man will sie ja nicht gleich verschrecken. Ich denke, wenn man ihnen konsequent "richtige" Codebeispiele zeigt und diejenigen, die es besonders arg treiben, muendlich auf PEP8, reicht es doch erstmal.

(\me = Ex-Java-Kurs-Tutor konfrontiert mit den abstrusesten Code-Einrueckungen und Nicht-Einrueckungen -- was sinde da schon ein paar Leerzeichen?)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Wer Inkonsistenten nicht erkennt, liest entweder den eigenen Source nicht oder nur unter Anstrengungen. Und ohne einen genauen Blick findet man auch Fehler nicht, von daher geht Einhalten von Code-Conventions für mich mittelfristig in die richtige Richtung. Sowas sollte man sich ruhig früh angewöhnen, solange es noch leicht geht.
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Y0Gi hat geschrieben:....von daher geht Einhalten von Code-Conventions für mich mittelfristig in die richtige Richtung. Sowas sollte man sich ruhig früh angewöhnen, solange es noch leicht geht.
Habe ich was anderes gesagt?
Wenn man sich aber aus okönischen Standpunkten Dinge leichter nimmt, wie die fehlende Unterscheidung von a = 50 und default=50, dann wird das kein Problem sein.

Meine SchülerInnen haben zudem das Recht sich auf mich rauszureden, wenn man den ersten Beitrag des Threads liest.

:D

LG

rolgal_reloaded
Antworten