Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #81558

Re: PyEval_GetLocals and unreferenced variables

Date 2014-11-26 10:46 +0000
From Kasper Peeters <kasper@phi-sci.com>
Subject Re: PyEval_GetLocals and unreferenced variables
References <20141126102257.141b108f@klug> <CAPTjJmov9s=_0yVSOYSRqoCoy69vyXCKvUpScirjBQDp28Sd4A@mail.gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.16317.1416998820.18130.python-list@python.org> (permalink)

Show all headers | View raw


> >   def fun():
> >      q=3
> >      def fun2():
> >         cfun()
> >      fun2()
> >
> >   fun()
> >
> > and access 'q' inside the C-function cfun(). If I simply let it call
> > PyEval_GetLocals, then the result will again not contain "q". Is
> > there any way in which I can convince python to pull 'q' into the
> > local scope from within my C code?
> 
> Wouldn't this be a little surprising? Why not simply pass q as a
> parameter?

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.

Cheers,
Kasper

Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Re: PyEval_GetLocals and unreferenced variables Kasper Peeters <kasper@phi-sci.com> - 2014-11-26 10:46 +0000
  Re: PyEval_GetLocals and unreferenced variables Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2014-11-30 00:34 +1300

csiph-web