PyEval_GetLocals and unreferenced variables

Chris Angelico rosuav at gmail.com
Wed Nov 26 05:51:33 EST 2014


On Wed, Nov 26, 2014 at 9:46 PM, Kasper Peeters <kasper at phi-sci.com> wrote:
> I agree that in this example that would be the natural thing to do.
> My case is more tricky though: I have something like
>
>     def fun():
>        cfun_that_creates_q_in_local_scope()
>        def fun2():
>            cfun_that_wants_to_see_if_q_is_available()
>
> So the Python side actually doesn't see 'q' directly at all.
>
> I am willing to elaborate on this if you want (I have fairly good
> reasons to do things this way, mostly having to do with historical
> constraints of an older C library that I cannot avoid), but it
> requires more space.
>

To be honest, that's just made it even more weird :) You're creating
something in a local namespace that the Python compiler isn't aware
of.

I wonder, would a 'nonlocal q' declaration inside fun2 affect things any?

Otherwise, maybe there's some completely different way to transfer
information around. Using locals in this way seems fraught with peril.

ChrisA



More information about the Python-list mailing list