local variable referenced before assignment
Stephen Hansen
apt.shansen at gmail.invalid
Mon Apr 5 14:55:04 EDT 2010
On 2010-04-05 10:08:51 -0700, John Nagle said:
> Yes. Functions with persistent state are generally a bad idea.
>
> Unfortunately, the "signal" module requires a callback parameter
> which is a plain function. So you have to send it a function,
> closure, or lambda. Here, it's being sent a closure - "handler"
> bound to the state that existed when "signal.signal" was called.
Uhh, what?
>> class A:
... def handle(self, foo, bar):
... print "Okay"
...
>>> a = A()
>>> signal.signal(signal.SIGALRM, a.handle)
0
>>> Okay
Where after that call to signal.signal, I did kill -ALRM and such in
another process.
When Python says 'a function', it doesn't mean a -plain- function. A
method's a function too. Arguably, really, any callable is almost
always (as in I can't think of anywhere it doesn't) sufficient to be
Functiony enough to work.
--
--S
... p.s: change the ".invalid" to ".com" in email address to reply privately.
More information about the Python-list
mailing list