How to get the closure environment in Python?

Yuan Cao yuancao85 at gmail.com
Thu Apr 28 12:46:10 EDT 2016


On Thu, Apr 28, 2016 at 12:23 PM, Jin Li <lijin.abc at gmail.com> wrote:
> Hi all,
>> 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()`.
>> Best regards,
> Jin
> --
> https://mail.python.org/mailman/listinfo/python-list

Hello,
You can sort of look into the underlying code by using __code__, and it's
associated methods.
I was able to get the variable names with:
print(funct1.__code__.co_varnames).
I was sort of able to get to the value 10 with:
print(func1.__code__.co_consts).
This way seems pretty messy. Other people probably have more elegant ways
of doing this.
I hope this helps.
Best Regards,
Yuan


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /