Extension Python C: Extrait le paramètre du moteur

J’aimerais utiliser Python pour effectuer des tests de mathématiques sur mes fonctions. Un programme typique pouvant accéder à Python est le suivant:

#include  #include  #include  int RunTests() { Py_Initialize(); PyRun_SimpleSsortingng("a=5"); PyRun_SimpleSsortingng("b='Hello'"); PyRun_SimpleSsortingng("c=1+2j"); PyRun_SimpleSsortingng("d=[1,3,5,7,9]"); //question here Py_Finalize(); return 0; } 

Ma question est: Comment puis-je extraire les parameters a,b,c,d dans PyObject s?

    PyRun_SimpleSsortingng() exécute le code dans le contexte du module __main__ . Vous pouvez récupérer une référence à ce module en utilisant PyImport_AddModule() , obtenir le dictionnaire de globals à partir de ce module et rechercher des variables:

     PyObject *main = PyImport_AddModule("__main__"); PyObject *globals = PyModule_GetDict(main); PyObject *a = PyDict_GetItemSsortingng(globals, "a"); 

    Au lieu d’utiliser cette approche, vous feriez mieux de créer un nouveau dictionnaire de globals et d’utiliser PyRun_Ssortingng() pour exécuter du code dans le contexte de ce globals dict:

     PyObject *globals = PyDict_New(); PyObject *a = PyRun_Ssortingng("5", Py_single_input, globals, globals); 

    De cette façon, vous n’avez pas besoin de stocker le résultat de votre expression dans une variable, puis de l’extraire de la scope globale de __main__ . Vous pouvez toujours utiliser des variables pour stocker les résultats intermédiaires, qui peuvent ensuite être extraits des globals comme ci-dessus.