full closures
Andrae Muys
amuys at shortech.com.au
Wed Feb 27 18:47:49 EST 2002
More information about the Python-list mailing list
Wed Feb 27 18:47:49 EST 2002
- Previous message (by thread): full closures
- Next message (by thread): full closures
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Emile van Sebille" <emile at fenx.com> wrote in message news:<a5jbra$7ok00$1 at ID-11957.news.dfncis.de>... > "Michael P. Soulier" <msoulier at nortelnetworks.com_.nospam> wrote in > message news:slrna7q9m0.4pb.msoulier at pmerd071.ca.nortel.com... > > Hello. > > > > While I know about bound methods in Python, I'm wondering if a > full > > closure can be implemented. Can it? > > > > Example: I want to pass an arbitrary code reference into a closure > and > > have all of its variables preserved. > > > > ie. > > > > print "the current count is %d" % counter; counter += 1 > > > > Can I pass the above code into a closure, and then simply call it > > repeatedly and see counter increment itself? If I pass in a function > with a > > local variable, that local will be reset each time, and I don't want > to use a > > global. > > > > I don't understand closures, but I might try something like: > > class Counter: > def __init__(self): > self.count = 0 > def __int__(self): > self.count += 1 > return self.count > > counter = Counter() > print "the current count is %d" % counter > That works, as does using a generator: def Counter(): counter = 0 while 1: print "the current count is %d % counter counter += 1 yield counter - 1 # might as well return it :) counter = Counter() counter.next() - the current counter is 0 - 0 counter.next() - the current counter is 1 - 1 Andrae
- Previous message (by thread): full closures
- Next message (by thread): full closures
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list