Python Whitespaces vermeiden ?

I

iKernelOS

Gast
Guten Tag allezusammen,

ich habe mir mal Python als 1.Sprache angelegt bzw. lerne es zurzeit und muss leider festellen, dass eine Funktionen mir die meisten Fehler gibt : die Whitespaces

Ich habe große Probleme mit denen und weiß auch langsam nicht mehr was die sind :D

Aber damit ist ein Abstand gemeint bei manchen Zeilen , ich bin total verwirrt wo und wann man sowas platzieren muss :(

Mit C# oder ähnlichen will ich nicht anfangen, weil Python Anfänger freundlicher (merkt man deutlich), aber auch eine starke Programmiersprache ist. <- Meine Ansicht und Internet Meinungen ;)

mfg
iKernelOS

PS: Ich akzeptiere jeden Beitrag / jede Kritik / jede Meinung..etc
 
Im Kontext von Python sind whitespaces die Leerzeichen am Anfang der Zeile.
Du weißt z.B. das wenn du mit "def" eine neue Funktion erstellst, du den Funktionsinhalt einrücken musst? Das sind die Whitespaces. Genauso wenn du eine Schleife, einen if Befehl, etc machst: auch einrücken damit das was eingerückt ist, Teil der Schleife oder des if Befehls ist. Und was auf der Höhe der Schleife ist, da ist die Schleife wieder zu Ende.
Einfach wenn man einrücken muss, 2 oder 3 Leerzeichen nutzen, und immer diese nutzen. Die meisten Editoren/IDEs wandeln einen Tab Tastendruck automatisch in die eingestellte Menge Leerzeichen (im englischen "whitespaces") um. Dein Editor hilft dir dabei und in Kürze bemekrst du das gar nicht mehr, geht alles automatisch.
 
Das mit den Whitespaces ist eine Besonderheit bei Python die einem Anfänger erst mal etwas stolpern lässt, wenn man sich aber mal dran gewöhnt hat eigentlich recht gut ist da man es in anderen Sprachen der Übersichtlichkeit halber auch so machen sollte, es aber nicht machen muss.

Damit ist die Einrückung der Befehle auf einer Zeile mittels Leerzeichen gemeint, die für alle Befehle die dem selben Scope angehören gleich sein muss. Wenn du also einen Funktion schreibst fängt die Funktionsdeklaration direkt am zeilenbeginn an. Alle befehle die nun zur Funktion gehören werden eingerückt, üblicherweise nimmt man 4 Leerzeichen. Aller folgenden Zeilen die mit 4 Leerzeicchen anfangen gehören damit automatisch zur Funktion. Die nächste Zeile die wieder direkt vorne Anfängt beendet diese Funktion und beginnt die nächste. Selbes Prinzip dann auch bei Schleifen und If-Abfragen. Der Kopf der Schleife oder ds Ifs ist erst mal genauso eingerückt wie die vorherigen befehle, alles was zum Schleifenrumpf (oder If Block) gehört wird wieder gegenüber dem kopf eingerückt und zwar wieder für jede Zeile gleich. beendet wird der Rumpf dann indem man wieder mit der Einrückungsebene auf das zurückgeht was auch der Kopf der Schleife hatte.

Am besten mal Codebeispiele anschauen und versuchen zu verstehen was die unterschiedlichen Einrückungstiefen bedeuten.

PS: bei anderen Sprachen wird die Zusammengehörigkeit solcher Blöcke üblicherweise über Klammern (meist die geschweiften) geregelt. Der Übersichtlichkeit halber rückt man das ganze aber trotzdem ein, auch wenn es für die Funktionsfähigkeit des Codes nicht notwendig wäre.
 
Python nutzt keine Marker für Blöcke, sondern die Einrückung. Wenn man nicht korrekt einrückt, kann es somit dazu kommen, dass der Code nicht funktioniert, weil Variablen nicht im richtigen Geltungsbereich gefunden werden etc.

Ist eigentlich ein ziemlich klares Konzept. Was genau bereitet Dir dabei Schwierigkeiten? Ein Beispiel, dass Python nicht akzeptiert wäre vielleicht hilfreich, um das Ganze einmal konkret durchzuspielen.


http://www.diveintopython.net/getting_to_know_python/indenting_code.html
https://docs.python.org/3/reference/lexical_analysis.html#indentation
 
Ich nehme an, das Problem ist Whitespaces versus Tabs?
Für eins entscheiden und nicht mixen ;)
 

Ähnliche Themen

Zurück
Oben