[Python-de] funktionen und statische variablen

Rainer Fischbach fischbach at ecs-gmbh.de
Tue Sep 17 18:43:08 EDT 2002


kleines PS noch, da wir kürzlich über pas pro & contra von Features im
Lisp-Stil gesprochen haben:

diese etwas umständliche Konstruktion

>
>class sv:
>    def __init__ (self, **stats):
>        map (lambda (a, v): setattr (self, a, v), stats.items ())
>    def bf (cls, **kargs):
>        return cls (**kargs).f
>    bf = classmethod (bf)
>    def f (self): pass
>    
>
>class svf (sv):
>    def f (self, x):
>        self.c += 1
>        return self.c * x
>
>f = svf.bf (c = 0)
>>

ist der Versuch, in Python nachzubilden, was z. B. in Scheme ganz einfach
so geht:

(define f (let ((c 0)) 
            (lambda (x) (set! c (+ c 1)) (* c x))))

> (f 1)
1
> (f 1)
2
> (f 1)
3

first-class closures haben eben doch etwas für sich! or allem ist die
Variable c aus dem closure im Gegensatz zu Funktionsattributen in Python
wirklich private!

ciao, Rainer


     
    Rainer Fischbach
______________________________________________________

    ECS
    Engineering Consulting & Solutions GmbH
    Muehlstrasse 3
    D-92318  Neumarkt

    Phone:               +49 (0)9181 - 4764-84
    Fax:                 +49 (0)9181 - 4764-50
    Mobile:              +49 (0)171  - 41 41 570
    e-mail:              fischbach at ecs-gmbh.de
    WWW:                 http://www.ecs-gmbh.de
______________________________________________________






More information about the Python-de mailing list