Python 是否可以从现有变量的名称获取PyObject引用?

Python 是否可以从现有变量的名称获取PyObject引用?,python,python-2.7,python-c-api,pyobject,Python,Python 2.7,Python C Api,Pyobject,是否有方法获取现有对象的对象引用, 在嵌入式Python代码中 换言之: 如果名为“obj”的对象已经存在(由脚本创建), 我需要将其“转换”为PyObject*引用,是否有类似于:PyObject*getObjectReference(char*name)的函数 编辑: 作为一个例子, 假设我使用 PyRun_SimpleString("var = 1"); (也可以是定义同一变量的外部脚本) 现在,在代码的另一个方面,我想得到那个变量。我在找像这样的东西 PyObject *varPy =

是否有方法获取现有对象的对象引用, 在嵌入式Python代码中

换言之: 如果名为“obj”的对象已经存在(由脚本创建), 我需要将其“转换”为PyObject*引用,是否有类似于:PyObject*getObjectReference(char*name)的函数

编辑: 作为一个例子, 假设我使用

PyRun_SimpleString("var = 1");
(也可以是定义同一变量的外部脚本)

现在,在代码的另一个方面,我想得到那个变量。我在找像这样的东西

PyObject *varPy = PyObject_GetGlobalObject("var");

“”部分回答我的问题,隐式地说,如果没有对创建全局定义变量的模块的引用,则无法检索该变量。这是正确的吗?

通过和我做的一些测试,收集了从DavidW收集的信息(感谢您的帮助)

要获取对已加载模块的引用,请使用:

PyImport_AddModule("module_name");
要获取对全局定义变量的引用,请导入主模块并按名称获取引用:

PyObject *mainModule = PyImport_AddModule("__main__");
PyObject *var = PyObject_GetAttrString(mainModule, "var_name");
如果变量是在不同的模块/脚本中定义的,那么它将仅在该模块中可见(而不是全局可见)。
因此,您必须使用特定模块的名称更改“main”。

是否可以添加一些代码来显示您正在尝试执行的操作?作为对编辑的响应:如果您知道变量所在模块的名称,您可以导入它以获取对模块的引用(导入已导入的模块没有问题)另外,如果你查阅
PyRun\u SimpleString
的文档,它会告诉你它运行的模块是
\uuuuuu main\uuuuu
,感谢DavidW的建议。这个变量不是由任何模块生成的,而是由主脚本生成的。我认为它可以从主脚本中检索,但在另一个问题中(“读取全局变量…”)这家伙说它对他不起作用(可能是因为它的变量是在脚本中定义的吧?)。我会试试看!效果很好!再次感谢。我会为我的问题写一个完整的答案以供进一步参考。