[Python-de] "Funktionalitaet" von Python

Christian Tismer tismer at tismer.com
Tue Sep 3 12:12:02 EDT 2002


holger krekel wrote:
> Stefan Schwarzer wrote:
> 
>>Hallo Dinu :-)
>>
>>Dinu Gherman wrote:
>>
>>>kann mir jemand die aktuelle Aufregung um die mehr oder 
>>>weniger vorhandenen funktionalen Eigenschaften von Python
>>>erklaeren? Guido wollte ganz sicher kein funktionales Py-
>>>thon und er wuergt immer noch, wenn er nur an "lambda" 
>>>denkt!
>>>
>>>Warum ist Python funktional? "Map", "filter" und "reduce" 
>>>kann jeder in wenigen Zeilen Python selbst schreiben. Macht 
>>>"lambda" Python schon funktional? Doch wohl kaum... Es ist
>>>manchmal praktisch, wenn man keine Funktion deklarieren
>>>will/kann und das war's dann auch schon mit dieser Funkt-
>>>ionalitaet in Python! ;-)
>>
>>lambda, map usw. stören mich nicht "an sich", man _kann_ damit sicher guten,
>>lesbaren Code schreiben. Das Problem sehe ich aber darin, dass diese Konstrukte
>>es ziemlich leicht machen, schwer verständlichen Code zu schreiben, der zuviel
>>"auf zu engem Raum" tut. Aus dem gleichen Grund, so denke ich, gibt es keine
>>Zuweisungs-_Operatoren_ und keinen ternären ?: -Operator wie in C.
> 
> 
> hauefig werden ja list-comprehensions als Alternative vorgeschlagen. Um
> zum Beispiel alle keys in B zu finden, die nicht in A sind:
> 
>     [ k for k in B if k not in A ]
> 
> (Zitat aus einer aktuellen c.l.py diskussion)
> 
> da finde ich die "funktionale" Variante lesbarer:
> 
>     map(lambda x: not x in A, B)
> 
> Die List-Comprehensions haben fuer meine Geschmack zu viele 
> "free-floating" Zeichen ohne jeden Halt fuer das Auge.

Dem kann ich leider nur zustimmen.
List comprehensions benutze ich jetzt gerne, um aus
3 zeilen code """
res = []
for thing in stuff:
    res.append (something(thing))
"""
eine zu machen:
res = [something(thing)for thing in stuff]

Aber die eigentliche Absicht Guido's war es m.W. tatsächlich,
Alternativen zu lambda, map und Konsorten zu liefern,
die nicht wirklich gelungen ist.
Abgesehen davon klappen die filter/reduce-Dinger sehr gut
in meinem Kopf, was aber vermutlich sehr persönlichkeits-
abhängig ist.

> Da finde ich map/lambda & friends netter, obwohl ich
> keine Lisp-Vergangenheit habe. 

Ich hoffe nur, daß an dieser Stelle *etwas* Vielfalt
erhalten bleibt, auch wenn's meistens nur "einen Weg"
geben sollte :-)
Anders gesagt: Da außer lambda der ganze funktionale
Kram einfach in Python nachpogrammierbar ist, wird
es auch nicht viele Gründe geben, diese Funktionen
aus den builtins zu verbannen. Und wenn, eine extension
ist leicht gemacht :-)

ciao - chris

-- 
Christian Tismer             :^)   <mailto:tismer at tismer.com>
Mission Impossible 5oftware  :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34  home +49 30 802 86 56  pager +49 173 24 18 776
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/






More information about the Python-de mailing list