Benennen oder nicht benennen: Wann sollten Sie Lambdas in Python Namen zuweisen?

Linda Hamilton
Freigeben: 2024-11-27 14:43:11
Original
724 Leute haben es durchsucht

To Name or Not to Name: When Should You Assign Names to Lambdas in Python?

Sollten Sie Lambdas in Python benennen?

Lambda-Ausdrücke bieten eine prägnante und bequeme Möglichkeit, anonyme Funktionen in Python zu definieren. Allerdings ist es oft verlockend, Lambdas innerhalb von Funktionen Namen zuzuweisen, um Code wiederzuverwenden und spezifische Funktionen zu nutzen.

Kritik an der Benennung von Lambdas

Diese Vorgehensweise mag zwar praktisch erscheinen, ist sie aber gilt im Allgemeinen als nicht-pythonisch und widerspricht der Empfehlung von PEP8. In PEP8 heißt es:

„Verwenden Sie immer eine Def-Anweisung anstelle einer Zuweisungsanweisung, die einen Lambda-Ausdruck direkt an einen Bezeichner bindet.“

Der Grund für diese Empfehlung ist, dass die Definition eines Lambda als Funktion:

  • Stellt einen klaren und eindeutigen Namen bereit: Im Gegensatz zu benannten Lambdas verknüpfen Def-Anweisungen die Funktion explizit mit einem aussagekräftigen Bezeichner.
  • Hilft bei Traceback und String-Darstellungen: Benannte Funktionen zeigen ihren spezifischen Namen in Fehlermeldungen und String-Darstellungen an und sorgen so für eine bessere Lesbarkeit.
  • Eliminiert den Hauptvorteil von Lambdas: Die Möglichkeit, anonyme Funktionen in größere Ausdrücke einzubetten, ist überflüssig, wenn Sie a eine Variable zuweisen lambda.

Beispiel

Betrachten Sie die in der Frage bereitgestellte Beispielfunktion:

def fcn_operating_on_arrays(array0, array1):
    indexer = lambda a0, a1, idx: a0[idx] + a1[idx]
    
    # ...
    indexed = indexer(array0, array1, indices)
    # ...
Nach dem Login kopieren

Anstatt ein benanntes Lambda zu verwenden, it Es ist pythonischer, einen separaten, explizit benannten zu definieren Funktion:

def index_array(a0, a1, idx):
    return a0[idx] + a1[idx]

def fcn_operating_on_arrays(array0, array1):
    
    # ...
    indexed = index_array(array0, array1, indices)
    # ...
Nach dem Login kopieren

Fazit

Obwohl die Zuweisung von Namen zu Lambdas in bestimmten Situationen nützlich erscheinen mag, wird dies nicht empfohlen. Befolgen Sie stattdessen das pythonische Prinzip der Verwendung expliziter Funktionsdefinitionen, um Klarheit, Lesbarkeit und die Einhaltung bewährter Methoden zu gewährleisten.

Das obige ist der detaillierte Inhalt vonBenennen oder nicht benennen: Wann sollten Sie Lambdas in Python Namen zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage