Benutzen von Funktionen

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
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

Gute Abend,

ich habe diesmal kein Problem, sondern mehr eine Frage.

Bsp:
Wenn ich die Funktion len() auf eine Variable anwende, sieht das ja so aus -> len(Variable)
Wenn ich die Funktion reverse() auf eine Liste anwende, sieht das ja so aus -> Liste.reverse()

Jetzt meine Frage:
Woher weis ich nun, wenn ich eine Funktion aufrufe, ob ich sie so wie im Bsp bei len() aufrufen muss,
oder so wie im Bsp bei reverse()?

Gibt es dahinter eine Logik?
-> Falls ja, ich hab sie bis jetzt noch nicht gefunden, bitte erklären :(
-> Falls nein, lern ich sie wie bisher halt auswendig

Vielen Dank und einen schönen Abend/Nacht^^
BlackJack

@Hartmannsgruber: `len()` ist eine Funktion und `list.reverse()` ist eine Methode, in diesem Fall auf Objekten vom Typ `list`. Und man muss halt lernen welche Funktionen und Methoden es gibt. Teilweise ist es historisch bedingt das etwas eine Funktion statt einer Methode ist, teilweise ist der Grund dass manche Funktionen als Funktion nur einmal implementiert werden und damit der gleiche Code auf verschiedene Datentypen anwendbar ist, wo man sonst auf jedem Datentyp mehr oder weniger die selbe Operation wieder und wieder implementiert hätte oder anfangen müsste grössere Typhierarchien aufzubauen, eventuell sogar mit Mehrfachvererbung um den Code wiederverwenden zu können. `len()` macht zum Beispiel auf allen Containertypen Sinn, `reverse()` nur auf solchen bei denen die Elemente eine Ordnung haben die man umkehren kann. Die `reversed()`-*Funktion* dagegen kann man auf jedes beliebige iterierbare Objekt anwenden — sofern es endlich viele Elemente hat zumindest.
Antworten