月忧茗 wrote:
> HI, I have some test code:
> def num(num):
> def deco(func):
> def wrap(*args, **kwargs):
> inputed_num = num
> return func(*args, **kwargs)
> return wrap
> return deco
> @num(5)
> def test(a):
> return a + inputed_num
> print test(1)
> when run this code, I got an error shows that 'inputed_num' is not
> defined
> My question is:
> In wrap function, is there not a closure that func can got 'inputed_num'
> ?
> Anyway, If not, how should I do to got my aim: Initialize some value,
> and use this value directly in the main function.
Variable scopes are determined statically. In
and thus does not change the scopes. To get the desired effect you have to
turn "inputed_num" into an explicit function argument, for example: