C-API: Get scope in function

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Sun Jan 17 22:16:55 CET 2010


En Sun, 17 Jan 2010 10:23:03 -0300, moerchendiser2k3  
<googler.1.webmaster at spamgourmet.com> escribió:

> I have a small problem how to get the scope from a C-API function.
> Check out this code snippet:
>
> [code]
> variable = 3
>
> def test():
>     print variable #output: 3
>     print globals() # ... 'variable': 3, ...
>
> test()
> [/code
>
>
> In my case I know there is a variable in the scope where this function
> is called from, but I dont know how to get it.

Note that in this case the relevant scope is the one where the Python  
function was *defined*, not where it is *called*.

> Check out:
>
> [code]
> PyObject *MyFunction_Test(PyObject* self, PyObject *args, PyObject
> *keywords)
> {
>      ... ?
> }
> [/code]
>
> Is it possible to get the dictionary of the scope where this function
> is called from?

Yes, you can obtain the global variables of the current execution frame  
using PyEval_GetGlobals()

-- 
Gabriel Genellina




More information about the Python-list mailing list