lambda-Ausdrücke zur Bestimmung des Zeitpunktes in Python (lambda-Ausdrücke zur Bestimmung des Zeitpunktes in Python), Lektion, Seite 723978
https://www.purl.org/stefan_ram/pub/lambda-zeitpunkt_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

lambda-Ausdrücke zur Bestimmung des Zeitpunktes in Python 

Das Warten illustriert die schrittweise Abarbeitung

Protokoll

from time import sleep

print( 1 ); sleep( 1 ); print( 2 )

Wir wollen »sleep( 1 )« mit »Warten« abkürzen.

Protokoll

from time import sleep

Warten = sleep( 1 )

print( 1 ); Warten; print( 2 )

Der obige Versuch verhält sich aber nicht wie gewünscht. Statt dessen geht aber folgendes.

Protokoll

from time import sleep

Warten = lambda: sleep( 1 )

print( 1 ); Warten(); print( 2 )

Durch das »lambda« wurde der Eintritt der Änderung (des Wartens) von der Definition zum Aufruf verschoben.

Dies liegt daran, daß der Wert des lambda-Ausdrucks »lambda: sleep( 1 )« den Aufruf »sleep( 1 )« enthält, aber dieser Aufruf noch nicht ausgewertet wurde. Erst beim Aufruf des lambda-Ausdrucks mit »Warten()« wird »sleep( 1 )« dann ausgewertet. »Warten()« kann auch mehrfach ausgewertet werden; bei jeder Auswertung wird »sleep( 1 )« dann erneut ausgewertet.

Inkarnation und Aktivierung ⃗

lambda-Ausdrücke erlauben es uns, die Inkarnation einer Funktion (Verbindung mit einem Argumentwert) von der nachfolgenden Aktivierung (Ausführung) zu trennen.

Ausführung
p2 = lambda: print( 2 )

Die Funktion «p2» repräsentiert nun eine Inkarnation (d.h. Verbindung) der Funktion ›print‹ mit dem Argumentwert «2». Da diese aber noch nicht aktiviert wurde, wurde bisher noch nichts ausgegeben. Durch einen Aufruf von «p2» können wir die Inkarnation aktivieren (auch wiederholt).

Auswertung
p2()
2
Auswertung
p2()
2

Wenn »print( 2 )« ausgewertet wird, erfolgt beides direkt hintereinander: Die Funktion ›print‹ wird mit dem Argumentwert «2» inkarniert und  die Inkarnation wird aktiviert.

Wir nennen eine Inkarnation wie »p2« auch eine lambda-Inkarnation.

Verschachtelte lambda-Ausdrücke *

Wir können auch eine Funktion «erzeuge_Warten» schreiben, die einen lambda-Wert ergibt, der einen Wert enthält, der erst beim Aufruf von «erzeuge_Warten» festgelegt wird.

Protokoll

from time import sleep

erzeuge_Warten = lambda x: lambda: sleep( x )

Warten = erzeuge_Warten( 1 ) # lambda: sleep( 1 )

print( 1 ); Warten(); print( 2 )

»Warten = erzeuge_Warten( 1 )« bedeutet dasselbe wie »Warten = lambda: sleep( 1 )«, da »lambda: sleep( 1 )« der Wert von »erzeuge_Warten( 1 )« ist.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723978 stefan_ram:723978 lambda-Ausdrücke zur Bestimmung des Zeitpunktes in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723978, slrprddef723978, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/lambda-zeitpunkt_python