Seite 1 von 1

Funktionsaufruf mit zwei Klammern

Verfasst: Sonntag 22. Dezember 2024, 07:58
von NWA
Hallo,

ich bin auf einen Funktionsaufruf gestossen. den ich nicht verstehe. Bei der Recherche zu dem Problem bekomme ich leider keine Lösung.

Folgender Code:

Code: Alles auswählen

def function1(arg1):
	...

antwort = function1(arg1: "Text")(**params)
Wofür kann man die zweite Klammer verwenden?

Re: Funktionsaufruf mit zwei Klammern

Verfasst: Sonntag 22. Dezember 2024, 08:59
von pillmuncher
Funktionen sind in Python Objekte, wie alles andere auch. Deswegen kann man Funktionen auch herumreichen:

Code: Alles auswählen

>>> def foo(f):
...     f(123)
... 
>>> foo(print)
123
Man kann auch Funktionen als Rückgabewert haben:

Code: Alles auswählen

>>> def bar():
...     return print
... 
>>> b = bar()
>>> b(234)
234
Und man braucht den Rückabewert nicht einer Variablen zuzuweisen, sondern man kann ihn direkt verwenden:

Code: Alles auswählen

>>> bar()(234)
234

Re: Funktionsaufruf mit zwei Klammern

Verfasst: Sonntag 22. Dezember 2024, 10:56
von Dennis89
Hallo,

der Teil mit `arg1: "Text"` ist doch syntaktisch falsch? Die Annotation gehört doch, wenn, in die Funktion, also `def funtion1(arg1: str)` und der Aufruf, dann eher `function1(arg1="Text")` oder?

Grüße
Dennis

Re: Funktionsaufruf mit zwei Klammern

Verfasst: Sonntag 22. Dezember 2024, 19:04
von NWA
@pillmuncher

Vielen Dank für deine netten Beispiele. Ich habe jetzt das Prinzip verstanden.

@Dennis
Hast natürlich recht. Hatte den Fehler nicht bemerkt...