Variabel länge = unterschiede ?

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.
Antworten
derteufeli
User
Beiträge: 3
Registriert: Mittwoch 13. Oktober 2010, 11:58

Moin,

bin gerade dabei Python zu lernen. Nutze ein tut von der Uni Heidelberg und bin begeistert :-) es macht einfach nur Spaß :-)
Nu folgendes verstehe ich nicht.

Wenn ich folgendes eingebe:

Code: Alles auswählen

pass = "something"
Gibt es diese Fehlermeldung
File "<stdin>", line 1
pass = "something"
^
SyntaxError: invalid syntax
sogut, es liegt an der Variabel. Aber warum ausgerechnet diese ?
Wenn ich vor "pass" ein _ oder dahinter eine Zahl mache geht es. kann auch Variablen verwenden die nur aus 3 Buchstaben bestehen also alk = "text" udn es geht.

Nu frage ich mich warum nicht ausgerechnet das pass vorweg geht, iste s eine Reservierte Variabel ?

Lg
Dennis
BlackJack

``pass`` ist ein Schlüsselwort wie ``for``, ``while``, oder ``def``. Das hätte man aber in der Dokumentation auch selbst herausfinden können.

Ausserdem gibt's das `keyword`-Modul in der Standardbibliothek, falls man diese Information mal zur Laufzeit in einem Programm benötigt.

Es liegt übrigens nicht an der "Variabel" (sic!) sondern am Namen oder Bezeichner. Eine Variable besteht aus einem Bezeichner und einem Wert (und einem Typ und einem Speicherort an dem der Wert steht).
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@derteufeli: Haettest du mal ein Link zu dem Tutorial?

Wenn das Teil des Tutorials ist, solltest du es nicht weiterverwenden. `pass` ist schon seit einer halben Ewigkeit ein Schluesselwort, unter der Annahme, dass das Snippet getestet worden waere, waere das Tutorial hoffnungslos veraltet.
derteufeli
User
Beiträge: 3
Registriert: Mittwoch 13. Oktober 2010, 11:58

``pass`` ist ein Schlüsselwort wie ``for``, ``while``, oder ``def``. Das hätte man aber in der Dokumentation auch selbst herausfinden können.

Ausserdem gibt's das `keyword`-Modul in der Standardbibliothek, falls man diese Information mal zur Laufzeit in einem Programm benötigt.
Danke für die Info.. Jedoch habe ich ein defizit bzw. Schwäche und mache lieber alles schritt für schritt und teste halt.. Wenn ich jedoch erst alles durchlese kann ich nochmal von vorne anfangen und alles durchlesen !

@Coli

Hier der Link :-) http://www.cl.uni-heidelberg.de/kurs/sk ... index.html
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Tatsächlich ist die wahre und gute Methode, sich Namen für Variablen auszudenken, heiß umstritten. Ich empfehle für Namen, die sich aus mehreren Wörtern zusammensetzen einen Stil wie

aLongVariableName
Da kann ich nur sagen: Ich rate dir von diesem Tutorial dringend ab! Nimm lieber das hier, das ist das offizielle Tutorial: http://docs.python.org/tutorial/index.html

Um die offiziellen Konventionen kennenzulernen, solltest du dir http://www.python.org/dev/peps/pep-0008/ bzw. dessen Übersetzung auf http://wiki.python.de/PEP%208%20(Übersetzung) anschauen.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

In dem Tutorial findet sich Folgendes - was vermutlich deine Frage ausgelöst hat:
Die folgenden Anweisungen lösen jeweils einen Syntaxfehler aus. Begründet in jedem Fall, warum.

1dozen = 12
pass = "something"
five$ = "ca4.6Euro"
Kannst du für die anderen Fälle erklären, warum das ein Syntaxfehler ist?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Scheint doch etwas aelter zu sein:
http://www.cl.uni-heidelberg.de/kurs/skripte/prog1/html/page011.html hat geschrieben:Ab Python 2.3 gibt es extra für Logik einen neuen Typ: bool. Das Beispiel oben sieht dann so aus:
Abseits von kaputten Links, Kleinigkeiten und der Nomenklatur hab ich bei Stichproben keine sonderlich trifftigen Gruende gefunden die dagegen sprechen das Tutorial zu verwenden. Aber weil es schon aelter ist und auch nicht sonderlich in die Tiefe geht wuerde ich dir trotzdem empfehlen danach das offizielle Tutorial durchzuarbeiten.
derteufeli
User
Beiträge: 3
Registriert: Mittwoch 13. Oktober 2010, 11:58

Danke für eure Tipps und Hinweise:


@/me

beim ersten steht eine Zahl an erster Stelle dies ist unzulässig.
Beim letzten ist es der Sonderzeichen ?! :K

Bei der Bediener Bezeichnung "pass" wusste ich nicht wo da der Fehler liegen sollte aber nun weiß ich es und kann es auch nachvollziehen.
BlackJack

@derdon: So schlecht scheint mir das Skript gar nicht zu sein. Der Autor hat auf jeden Fall Ahnung von Python und ist kein Tutor/Dozent der das selber gerade gelernt hat. Und auch auf PEP8 weist er ausdrücklich hin, mit der einzigen Ausnahme, dass er Unterstriche nicht mag. Siehe Seite 13 im PDF-Skript.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Nimm doch einen Editor mit highlighting, also mit farblicher Kennzeichnung des Quellcodes, der sollte "pass" eigentlich deutlich hervorheben.

Ich nutze meistens gedit oder idle.
Zuletzt geändert von Xynon1 am Mittwoch 13. Oktober 2010, 16:42, insgesamt 1-mal geändert.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
lunar

@BlackJack: Auf der anderen Seite erweckt manches schon den Eindruck, als hätte sich ein Java- oder C++-Entwickler an einem Python-Tutorium versucht (e.g. triviale Getter und Setter). Anderes ist auch unglücklich erklärt oder formuliert (e.g. der für Anfänger bestimmt eher verwirrende Rückgriff auf Zeiger im Abschnitt "Bäume I").

Allerdings finde kann man das durchaus verschmerzen, in Anbetracht der Tatsache, dass es sehr umfangreich und augenscheinlich korrekt ist, und vor allem auch weitergehende, interessantere Themen behandelt. Nur wegen den Namenskonventionen davon abzuraten, finde ich jedenfalls etwas lächerlich.
BlackJack

@lunar: So weit habe ich gar nicht gelesen. :-)
lunar

So „weit“ habe ich auch nicht gelesen ... ich habe direkt an der Stelle angefangen, weil mich die Einstiegskapitel ehrlich gesagt nicht so direkt interessieren ;)
Antworten