[Python-de] AW: [Python-de] Parameterübergabe bei lamdaamda

Christian Tismer tismer at appliedbiometrics.com
Mon May 31 19:32:19 EDT 1999


Stefan Franke wrote:
> 
> Nee, genau das geht in Python nicht, weil die Sprache nicht - wie
> so viele anderen Programmiersprachen - mit verschachtelten
> Scopes arbeitet, sondern mit genau zwei Namensräumen: Dem
> globalen und dem lokalen (in der aktuellen Funktion oder
> Methode).
> 
> Das hat u.a. auch noch zur Folge, daß sich lokal definierte
> Funktionen - etwa anstelle eines Lambda-Ausdrucks, nicht
> rekursiv aufrufen können, weil ihr Name ja nur im Scope der
> umgebenden Funktion bekannt ist.

Oops, Tschuldigung, hatte übersehen, daß das längst
beantwortet war.

Apropos, man kann die Rekursion dennoch hinkriegen, indem
man die Funktion selber durchreicht:

>>> def outer(a):
... 	def inner(arg, inner):
... 		if arg: inner(arg-1, inner)
... 		print arg
... 	inner(a, inner)
... 
>>> outer(4)
0
1
2
3
4
>>> 

ciao - chris

-- 
Christian Tismer             :^)   <mailto:tismer at appliedbiometrics.com>
Applied Biometrics GmbH      :     Have a break! Take a ride on Python's
Kaiserin-Augusta-Allee 101   :    *Starship* http://starship.python.net
10553 Berlin                 :     PGP key -> http://wwwkeys.pgp.net
PGP Fingerprint       E182 71C7 1A9D 66E9 9D15  D3CC D4D7 93E2 1FAE F6DF
     we're tired of banana software - shipped green, ripens at home




More information about the Python-de mailing list