[Python-de] "Funktionalitaet" von Python

Stefan Schwarzer sschwarzer at sschwarzer.net
Sat Aug 31 01:07:12 EDT 2002


Hallo Holger,

holger krekel wrote:
> Stefan Schwarzer wrote:
>>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)

ich mag nicht die eine oder die andere Möglichkeit pauschal lieber. Es kommt
drauf an. Zum Beispiel finde ich

strings = map(str, liste)

netter als

strings = [str(item) for item in liste]

(Zumindest hätte ich das vor ein paar Monaten noch gesagt; ich merke, dass ich
mich wohl _sehr_ an List Comprehensions gewöhnt habe bzw. map & Co. eben nicht
mehr gewohnt bin. ;-) )

Im Zweifelsfall würde ich aber die Schreibweise mit List Comprehensions bevorzugen.
Wenn ich mich allerdings getreu dem Motto entscheiden müsste, dass es vorzugsweise
_eine_ naheliegende Methode geben sollte, etwas zu tun, würde ich eher lambda und
map rauswerfen als List Comprehensions. ;-)

> Die List-Comprehensions haben fuer meine Geschmack zu viele 
> "free-floating" Zeichen ohne jeden Halt fuer das Auge.

Da gebe ich dir recht. Normalerweise kompensiere ich so etwas durch "strukturierende
Abstände":

[ k  for k in B  if k not in A ]

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

Wie gesagt, ich finde, es kommt drauf an. :-)

Viele Grüße
  Stefan





More information about the Python-de mailing list