同名函数调用不会混淆么
def new_fn(f):
def fn(x):
print 'call' + f._name_ + '()'
return f(x)
return fn
问题在:
@new_fn
def f(x):
return x*2等价于
def f(x):
return x*2
f = new_fn(f)
由于new_fn()是一个decorator,返回一个函数,所以原来的f函数仍然存在,只是现在的同名f = new_fn(f),指向了新的函数。于是调用f()将执行新函数,即在new_fn()函数中返回的fn()函数。fn()函数内,首先打印日志,再接着调用原始函数f()。问题是这个调用不会混淆原始的f()和新函数f()么?