我正面臨一個我無法理解的問題。我使用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