Hello everyone,
I'm storing functions in a dictionary (this is basically for cooking up
my own fancy schmancy callback scheme, mainly for learning purpose):
>>> def f2(arg):
... return "f2 " + arg
...
>>>
>>> def f1(arg):
... return "f1" + arg
...
>>> a={'1': f1, '2': f2}
>>>
>>> [ x[1](x[0]) for x in a.items() ]
['f11', 'f2 2']
Well, neat. Except if I change function definitions now, old functions
are called. And rightly:
{'1': <function f1 at 0xb7f0ba04>, '2': <function f2 at 0xb7f0b9cc>}
>>> f1
<function f1 at 0xb7f0ba04>
>>>
>>> def f1(arg):
... return "NEW f1 " + arg
...
>>> f1
<function f1 at 0xb7f0b994>
The address of function f1 has obviously changed on redefinition.
Storing value copies in a dictionary on assignment is a reasonable
default behaviour.
However, in this particular case I need to specifically store
_references to objects_ (e.g. f1 function), or should I say _labels_
(leading to objects)?
Of course, I can basically update the dictionary with a new function
definition.
But I wonder, is there not a way _in general_ to specifically store
references to functions/variables/first-class objects instead of copies
in a dictionary?
--
http://mail.python.org/mailman/listinfo/python-list