Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Argumente für eine Python-Funktion mit „functools.partial' voreinstellen?

Wie kann ich Argumente für eine Python-Funktion mit „functools.partial' voreinstellen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-10 22:21:13315Durchsuche

How Can I Preset Arguments for a Python Function Using `functools.partial`?

So binden Sie Argumente an eine Python-Funktion

In Python können Situationen auftreten, in denen das Binden von Argumenten an eine Funktion für die spätere Ausführung erforderlich ist ohne dass es weiterer Argumente bedarf. Betrachten Sie das Beispiel:

def add(x, y):
    return x + y

add_5 = magic_function(add, 5)
assert add_5(3) == 8

In diesem Szenario müssen wir die magic_function bestimmen, die das Argument 5 an die Add-Funktion binden kann.

Die Lösung liegt in der Verwendung des Moduls functools.partial :

import functools

add_5 = functools.partial(add, 5)  # Bind '5' as the first argument to 'add'
assert add_5(3) == 8  # Call 'add_5' with '3' as the second argument

functools.partial erstellt effektiv ein aufrufbares Objekt, das die ursprüngliche Funktion mit einem voreingestellten Argument umschließt. Dadurch können wir die Funktion später ausführen, ohne das feste Argument explizit anzugeben.

Der folgende Code demonstriert einen äquivalenten Ansatz unter Verwendung eines Lambda-Ausdrucks:

print_hello = lambda *a, **kw: sys.stdout.write("Hello world\n", *a, **kw)

Hier sind die Argumente für print_hello werden so behandelt, als wären sie an sys.stdout.write übergeben worden, was eine flexible Argumentübergabe während der Ausführung ermöglicht.

Das obige ist der detaillierte Inhalt vonWie kann ich Argumente für eine Python-Funktion mit „functools.partial' voreinstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn