2011-07-02 53 views
2

從c-api中,我想通過名稱調用python函數。然後我會用一個python對象列表作爲參數來調用函數。如何從C-API中按名稱調用python函數?

在Python文檔中,我不清楚如何從主python解釋器中獲得「Callable」對象。

任何幫助讚賞:

  1. 從功能
  2. 呼喚我PythonObject的作爲參數的函數獲取地址。

我爲我的開發使用了Python 2.x系列。

+0

相關:http://stackoverflow.com/questions/4342560/python-c-api-call-a-python-function-with-arguments-passed-by-reference –

回答

3

基本上,您使用Python C API來獲取函數所包含的模塊,然後查詢該函數的模塊字典。當Python代碼從某處調用某個函數時,這與Python運行時在內部所做的或多或少是相同的。

從API中查看的相關函數是PyImport_ImportModule,PyModule_GetDict,PyDict_GetItemPyObject_CallXXX系列函數。

+0

感謝您的快速響應。我將如何獲得主模塊? – Juan

+0

看起來像__main__ – Juan

+0

他的意思是'__main__' – bukzor