我正面临一个我无法理解的问题。我使用Python C API来在C++应用程序中使用一些Python代码。Python C API和Python函数中修改的全局变量
基本上,我有一个python模块(MyModule.py)这个东西:
TheValue=25
def modifyValue():
global TheValue
TheValue=50
然后,从C++代码,我有这样的:
...
PyRun_SimpleStringFlags ("from MyModule import *", NULL);
...
PyRun_SimpleStringFlags ("modifyValue()", NULL);
PyRun_SimpleStringFlags ("print(TheValue)", NULL);
...
因此,我期望由于Python代码中定义的全局范围,“TheValue”的最终值为50。但是,我总是获得原始值:25 当我通过PyRun_SimpleStringFlags()函数从C++运行Python函数时,看起来全局范围并未保留。
我也试过PyObject_CallFunction()和行为是一样的。
当然,如果我从一个Python控制台运行Python代码,然后TheValue具有正确的值:50
什么错在这里的? 有没有人对此有过解释? 在此先感谢!
OK。现在很明显。谢谢你的解释! – ZUBIGF