私は理解できない問題に直面しています。私は、Python C APIを使ってPythonコードをC++アプリケーションで使用しています。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でした。しかし、私はいつもオリジナルの値を取得しています: Python関数をPythonの関数をPythonのPyRun_SimpleStringFlags()関数を通して実行していると、グローバルスコープが保持されないようです。
PyObject_CallFunction()も試しましたが、動作は同じです。ここで間違って何50
:私はpythonのコンソールからPythonコードを実行する場合はもちろん
、そしてTheValueは正しい値を持っていますか? 誰もこれについて説明していますか? ありがとうございます!
OK。今それは明らかです。あなたの説明をありがとう! – ZUBIGF