提问人:Oliver 提问时间:4/16/2014 更新时间:4/16/2014 访问量:389
在 Python 函数中拦截本地赋值
intercept local assignment in python function
问:
我一直在尝试在 Python 中拦截全局赋值:
class MyDict(dict):
def __setitem__(self, k, v):
print "intercepted assignment to ", k
super(MyDict, self).__setitem__(self, k, v)
nsG = MyDict()
exec('a=10', nsG)
这将打印“截获的对 a 的分配”。凉!但是,这在函数中不起作用:
def f():
# global a
a = 10
exec("f()", nsG)
在那里,赋值不会被截获(因为默认情况下,函数中的赋值是该函数的本地赋值:是本地的,所以不涉及;如果我取消注释中的语句,那么赋值就会被截获,正如人们所期望的那样)。a
a
f
nsG
global a
f
有没有办法拦截函数中的本地赋值?
答: 暂无答案
上一个:赋值运算符中的序列点
评论
__setitem__
__setitem__
当地人
。nsG
exec
globals
locals