[問題] 讓Python 用C運算 之 傳變數的問題

看板Python作者 (阿真)時間16年前 (2009/06/06 13:20), 編輯推噓2(202)
留言4則, 1人參與, 最新討論串1/5 (看更多)
我想應該是觀念上的問題 但我自己無從解起 想請版上的大家幫個忙 在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)
文章代碼(AID): #1AAVoevL (Python)
文章代碼(AID): #1AAVoevL (Python)