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: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

PEP 8

Beitragvon rolgal_reloaded » Donnerstag 7. Juni 2007, 14:44

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

Beitragvon birkenfeld » Donnerstag 7. Juni 2007, 14:46

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: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Donnerstag 7. Juni 2007, 14:54

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:

Beitragvon CM » Donnerstag 7. Juni 2007, 14:55

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

Beitragvon birkenfeld » Donnerstag 7. Juni 2007, 14:57

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: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Donnerstag 7. Juni 2007, 15:00

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

Beitragvon Y0Gi » Donnerstag 7. Juni 2007, 16:24

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

Beitragvon birkenfeld » Donnerstag 7. Juni 2007, 16:29

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: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Donnerstag 7. Juni 2007, 16:41

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

Beitragvon BlackJack » Donnerstag 7. Juni 2007, 17:11

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: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Donnerstag 7. Juni 2007, 17:25

@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

Beitragvon BlackJack » Donnerstag 7. Juni 2007, 17:30

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

Beitragvon Y0Gi » Donnerstag 7. Juni 2007, 17:32

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: 309
Registriert: Dienstag 24. Oktober 2006, 19:31

Beitragvon rolgal_reloaded » Donnerstag 7. Juni 2007, 18:04

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:

Beitragvon veers » Donnerstag 7. Juni 2007, 18:25


Wer ist online?

Mitglieder in diesem Forum: Google [Bot], snafu, Sophus