[問題] 讓Python 用C運算 之 傳變數的問題
我想應該是觀念上的問題 但我自己無從解起
想請版上的大家幫個忙
在Python官網裡有一篇
Extending and Embedding the Python Interpreter
的1.1 A Simple Example
有簡單的介紹如何使用Python 請C運算
裡面有個PyArg_ParseTuple()的指令
我解讀是 例如:PyArg_ParseTuple(args, "s", &command) (本中例子)
把傳進來的py變數(args)做分析,是一個字串,然後讓
command變數的記憶體位置變成py變數的記憶體位置(?!)
也許解讀有誤 但如果傳變數完成的話
就可以把py字串的內容 傳達給C的command變數了
然後寫了一些比較長的程式 其中傳變數的地方如下:
long int func_num;
PyObject *pylagS,*pylagT,*pyCOV,*pyFitVar;
//上面只是宣告五個變數要接Python傳來的東西
PySys_WriteStdout("parse OK");//這是要"手動"測式程式有沒有跑到這
//傳遞參數
if (!PyArg_ParseTuple(args, "(OOOOI)", \
&pylagS,&pylagT,&pyCOV,&pyFitVar,&func_num)) return NULL;
//上面是這個函數常用的做法 如果傳變數失敗 會要求傳回NULL
PySys_WriteStdout("parse OK");//看有沒有跑到這
之後做的是把Py的那些變數轉給c的陣列 然後做我要的計算
在我用Python import 編譯好的 pyd檔 然後直接使用這個"長的程式"
是可以跑完的(表示程式方面運作沒問題)
但是 我認為這個"長的程式" 應該也可以在C中使用吧??(這部份想請教)
也就是說:
在C寫一個py函式
static PyObject *funcA (PyObject *self, PyObject *args)
{
(把args做一些修改變成args2)//一段程式碼
PyObject *value = funcB(NULL,args2); //另一個寫好的funcB
return Py_BuildValue("N",value);
}
不知道這樣行不行得通
裡面的funcB就是我的"長的程式"
單單使用funcB是沒問題的
而要使用funcA傳變數給funcB使用 就會有"誤"
"誤"是指 程式爆掉 不是例外 是XP不回報的那種
是表示傳回NULL嗎??
因為傳不成功 不是該傳給NULL嗎 怎麼會有誤
總覺得是我哪裡的觀念有誤
但這種complie會過 單獨使用也會過 但合併使用就會爆的問題...
我想請大家給我點提示或決解方向
有任何我上面說不清楚的地方請務必發問 我會盡量補齊的Q_Q
----以下是題外話----
版上有些"利用Python 從網路上抓取資訊"的文章
有些是抓股票資訊、有些是抓網頁內容
Python官網似乎也有提供基本的module
如果想看一些很簡單的範例
或是很詳細的解說
有人可以提供一些給初心者參考的網頁嗎??
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.63. 180
推
06/06 13:59, , 1F
06/06 13:59, 1F
→
06/06 13:59, , 2F
06/06 13:59, 2F
→
06/06 13:59, , 3F
06/06 13:59, 3F
推
06/06 14:42, , 4F
06/06 14:42, 4F
※ 編輯: KSJ 來自: 140.112.63.180 (06/06 14:46)
※ 編輯: KSJ 來自: 112.104.5.233 (06/06 17:54)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 5 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章