On Wed, Dec 3, 2014 at 5:28 AM, Gregory Ewing
wrote:
>
> Kasper Peeters wrote:
>>
>> That may have been the design plan, but in Python 2.7.6, I definitely
>> am able to inject locals via PyEval_GetLocals() and have them be visible
>> both from the C and Python side;
>
> What seems to be happening
Kasper Peeters wrote:
That may have been the design plan, but in Python 2.7.6, I definitely
am able to inject locals via PyEval_GetLocals() and have them be visible
both from the C and Python side;
What seems to be happening is that the dict created by
PyEval_GetLocals() is kept around, so you
> I'm not sure how you think you're adding a local from C
> code. If you're using PyEval_GetLocals(), that only gives
> you a dict containing a *copy* of the locals; modifying
> that dict doesn't change the locals in the function's frame.
That may have been the design plan, but in Python 2.7.6, I
Ned Batchelder wrote:
I would use thread locals for this:
https://docs.python.org/2/library/threading.html#threading.local
You could get dynamic scoping that way, but the OP
seems to want lexical scoping.
--
Greg
--
https://mail.python.org/mailman/listinfo/python-list
Kasper Peeters wrote:
I could in principle decide to make these settings a proper
Python object, and ask the user to create one and pass it along at
every C-function call.
I would make the C functions methods of the object holding
the settings. Your nested function example would then look
somet
On 12/2/14 4:35 AM, Kasper Peeters wrote:
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 think you will need to elaborate.
Ok, here goes (an
> > 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 think you will need to elaborate.
Ok, here goes (and thanks for listening)
Kasper Peeters wrote:
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 think
> 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.
Yes, I agree that retrieving the locals with PyEval_GetLocals and then
sticking something in there on the C side is weird. I wouldn't say that
the Pyth
On Wed, Nov 26, 2014 at 9:46 PM, Kasper Peeters 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_
> > 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
On Wed, Nov 26, 2014 at 9:22 PM, Kasper Peeters wrote:
> That is, I want
> to do:
>
> 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 co
I have a question about PyEval_GetLocals(). The normal behaviour of
PyEval_GetLocals(), and in fact of the locals() function in Python
itself, is to return a list which includes only those variables which
are actually referenced in the local scope. Example:
def fun():
q=3
def fun2():
13 matches
Mail list logo