A critic of Guido's blog on Python's lambda
michele.simionato at gmail.com
michele.simionato at gmail.com
Tue May 9 03:37:21 EDT 2006
Ken Tilton wrote:
> Python has a weak lambda, statements do not always
> return values, it does not have macros, and I do not know if it has
> special variables.
I am pretty much ignorant of Common Lisp, but I have the impression
they are the
same as Scheme parameters, i.e. thread-local dynamically scoped
variables
(feel free to correct me if I am mistaken). If I am right, here is how
you would emulate them in recent versions of Python:
import threading, time
special = threading.local()
special.x = 0
def getx():
return special.x
def set_x(value):
special.x = value
time.sleep(3-value) # thread-2 completes after thread-1
print "%s is setting x to %s" % (threading.currentThread(), getx())
if __name__ == '__main__':
print getx() # => 0
threading.Thread(None, lambda : set_x(1)).start() # => 1
threading.Thread(None, lambda : set_x(2)).start() # => 2
time.sleep(3)
print getx() # => 0
Michele Simionato
More information about the Python-list
mailing list