On Fri, 29 Apr 2016 02:23 am, Jin Li wrote: > I want to get the closure environment in Python. As in the following > example: > > def func1(): > x = 10 > def func2(): > return 0 > return func2 > > f=func1() > print f() > > > How could I get the variable `x` in the environment of `func2()`? i.e. > `f()`.
In this case, you can't, because f is not a closure. The inner function has to actually use a variable from the enclosing scope to be a closure -- it's just a regular function that simply returns 0. The enclosing x does nothing. You can see this by inspecting f.__closure__, which is None. If we use a better example: def outer(): x = 10 def inner(): return x + 1 return inner f = outer() then you can inspect f.__closure__[0].cell_contents which will return 10 (the value of x). -- Steven -- https://mail.python.org/mailman/listinfo/python-list