Ich bin Python-Anfänger. Vielleicht klingt das für Euch wie eine dumme Frage aber mir ist es verdammt wichtig es zu verstehen. Denn ich weiss in den meisten Fällen zu 90 Prozent was ich verwenden soll, aber nicht, WIE. Hier ein mal ein Beispiel:
Wir haben folgende Liste und folgende Szenarien:
Hinten einen Wert anfügen:
studenten = ["Mark", "Lukas", "Michael", "Friedrich"]
studenten.append("Jens")
print(studenten")
Ermitteln wie lang die Liste ist:
studenten = ["Mark", "Lukas", "Michael", "Friedrich"]
print(len(studenten))
Liste-> String
studenten = ["Mark", "Lukas", "Michael", "Friedrich"]
print(", ".join(studenten))
String in Liste
studenten = "Mark, Lukas, Michael, Friedrich"
print(i.split())
So, bei dem ersten Beispiel nehmen wir zuerst die Variable und dann append"studenten.append"
Beim zweiten Beispiel nehmen wir aber zuerst "len" und dann die Variable und das auch noch in Klammern?!
Das dritte Beispiel hat mich dann ganz vom Hocker gehauen ist aber ähnlich wie das zweite Beispiel.
Und das letzte Beispiel hat Parallelen zum ersten Beispiel
Meine Frage ist, wie kann ich mir das einprägen, wann ich was zuerst verwende? Wann benutze ich z.B. zuerst die definierte Variable und dann "append" zum Beispiel. Oder wann benutze ich zuerst die eine Funktion und dann nachfolgend die Variable? Wie merkt Ihr Euch das? Ich hoffe ich habe mich verständlich erklärt. Wünsche Euch noch einen angenehmen Tag
Wie kann ich mir das merken z.B Listen
- noisefloor
- User
- Beiträge: 4193
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Doku lesen und merken - wie halt bei allem im Leben, was man sich merken will
Das ist halt die Syntax von Python. Jede Programmiersprache hat ja so was.
Ein paar Grundsachen:
foo.bar(arg): wendet die Methode `bar` mit dem Argument `arg` auf das Objekt `foo` an. In deinem Fall `studenten.append("Jens")`: auf das Listenobjekt `stundenten` wird die Methode `append` mit dem Wert `Jens` angewendet.
spamegg(arg): wendet die Funktion `spamegg` mit dem Argument `arg` an. In deinem Fall `len(studenten)`: wende die Funktion `len` auf das Argument `studenten` an. `studenten` ist eine Variable, könnte aber auch sowas wie `len((1, 2, 3))` das Tupel `(1, 2, 3)` sein. Im gegebenen Fall muss `arg` allgemein ein Objekt sein, dass eine Länge hat.
`", ".join(studenten)` ist wie das erste: auf das String-Objekt `,` wird die `join` Methode mit dem Argument `studenten` angewendet.
Das Grundprinzip ist immer gleich und IMHO eigentlich relativ einfach zu verstehen. Ob man dann noch alle Methoden eines Objekts auswendig können wir (oder muss) ist ein anderes Thema. Mit `dir(Objekt)` kannst du dir alle Methoden (und ggf. Attribute, wenn es welche gibt) eines Objekts anzeigen lassen. Beispiel:
Zum String `,`, der an die Variable `a` gebunden ist, werden alle Methoden angezeigt. Da ist auch das obige `join` bei.
Gruß, noisefloor
Doku lesen und merken - wie halt bei allem im Leben, was man sich merken will

Das ist halt die Syntax von Python. Jede Programmiersprache hat ja so was.
Ein paar Grundsachen:
foo.bar(arg): wendet die Methode `bar` mit dem Argument `arg` auf das Objekt `foo` an. In deinem Fall `studenten.append("Jens")`: auf das Listenobjekt `stundenten` wird die Methode `append` mit dem Wert `Jens` angewendet.
spamegg(arg): wendet die Funktion `spamegg` mit dem Argument `arg` an. In deinem Fall `len(studenten)`: wende die Funktion `len` auf das Argument `studenten` an. `studenten` ist eine Variable, könnte aber auch sowas wie `len((1, 2, 3))` das Tupel `(1, 2, 3)` sein. Im gegebenen Fall muss `arg` allgemein ein Objekt sein, dass eine Länge hat.
`", ".join(studenten)` ist wie das erste: auf das String-Objekt `,` wird die `join` Methode mit dem Argument `studenten` angewendet.
Das Grundprinzip ist immer gleich und IMHO eigentlich relativ einfach zu verstehen. Ob man dann noch alle Methoden eines Objekts auswendig können wir (oder muss) ist ein anderes Thema. Mit `dir(Objekt)` kannst du dir alle Methoden (und ggf. Attribute, wenn es welche gibt) eines Objekts anzeigen lassen. Beispiel:
Code: Alles auswählen
>>> a = ','
>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
Gruß, noisefloor
Also ich kann mir das einfach so merken. Methoden werden halt auf Objekten aufgerufen, stehen so gesehen hinter dem Objekt. Und Funktionen stehen vor dem Objekt.
Mit join() ist etwas ungewöhnlich in Python. Das eine Methode auf Strings, wobei der String der Trenner ist. Also: Trenner, füg mir dein Argument zusammen. Wobei das Argument alles mögliche sein kann, das Objekte liefert (Liste, Tupel, Set, usw). Das kann man ja schlecht für alle Objekte einzeln definieren. Insofern hat der Ansatz schon seinen Sinn, auch wenn man anfangs drüber stolpert. Die Alternative wäre, von etwas wie Joinable zu erben oder (was eher Python wäre) eine __join__()-Methode zu definieren. Oder join() als Funktion implementieren. Man hat sich aber für den besagten Weg entschieden und ich finde das auch nicht sooo schlimm.
Mit join() ist etwas ungewöhnlich in Python. Das eine Methode auf Strings, wobei der String der Trenner ist. Also: Trenner, füg mir dein Argument zusammen. Wobei das Argument alles mögliche sein kann, das Objekte liefert (Liste, Tupel, Set, usw). Das kann man ja schlecht für alle Objekte einzeln definieren. Insofern hat der Ansatz schon seinen Sinn, auch wenn man anfangs drüber stolpert. Die Alternative wäre, von etwas wie Joinable zu erben oder (was eher Python wäre) eine __join__()-Methode zu definieren. Oder join() als Funktion implementieren. Man hat sich aber für den besagten Weg entschieden und ich finde das auch nicht sooo schlimm.
-
- User
- Beiträge: 4
- Registriert: Mittwoch 8. April 2020, 21:25
Okay das hat mich leicht durcheinander gebracht
. Ich denke "foo.bar(arg)" war nur ein Beispiel um sie als Erklärung zu benutzen?
Aber trotzdem erstmal herzlichen Dank dafür, dass du deine Zeit geopfert hast um den Hilfstext zu verfassen. Kurz eine Frage:
"Doku lesen und merken - wie halt bei allem im Leben, was man sich merken will
"
Von welcher Doku ist hier die Rede? Gibts die auch auf Deutsch? Würde mich auf eine Antwort freuen.

Aber trotzdem erstmal herzlichen Dank dafür, dass du deine Zeit geopfert hast um den Hilfstext zu verfassen. Kurz eine Frage:
"Doku lesen und merken - wie halt bei allem im Leben, was man sich merken will

Von welcher Doku ist hier die Rede? Gibts die auch auf Deutsch? Würde mich auf eine Antwort freuen.
- noisefloor
- User
- Beiträge: 4193
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Es gibt AFAIK eine Übersetzung für die ältere Version 3.3. Da sich die Grundlagen aber innerhalb von Python 3 nicht geändert haben, ist das für's Grundverständnis ok die zu Lesen. Aber englisch Lesen schadet auch nicht, weil nun mal die allermeisten Softwareprojekt inkl. Python und Module für Python auf Englisch dokumentiert sind.
Gruß, noisefloor
Die offizielle Python-Doku ist auf docs.python.orgVon welcher Doku ist hier die Rede? Gibts die auch auf Deutsch?
Es gibt AFAIK eine Übersetzung für die ältere Version 3.3. Da sich die Grundlagen aber innerhalb von Python 3 nicht geändert haben, ist das für's Grundverständnis ok die zu Lesen. Aber englisch Lesen schadet auch nicht, weil nun mal die allermeisten Softwareprojekt inkl. Python und Module für Python auf Englisch dokumentiert sind.
Gruß, noisefloor
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@OrhanBencegay: Warum stellts Du die gleich Frage noch mal? Du hast doch schon Antworten bekommen: viewtopic.php?f=2&t=48224
“Vir, intelligence has nothing to do with politics!” — Londo Mollari