成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

python函數(shù)的編譯 Python編譯命令

python的strip_ge = re.compile(r"^ge(.{4,})")怎么理解

在r"^ge(.{4,})")中

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),市中企業(yè)網(wǎng)站建設(shè),市中品牌網(wǎng)站建設(shè),網(wǎng)站定制,市中網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,市中網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

r表示原生字符串,即 不用對正則表達(dá)式中的反斜杠再轉(zhuǎn)義。

^ge表示以ge開頭的字符串。

.{4,}表示除回車換行符外的4個及以上的任意字符。

r"^ge(.{4,})")表示捕獲以ge開頭的字符串中g(shù)e后面的部分。

完整的Python程序如下。

import re

strip_ge = re.compile(r"^ge(.{4,})")

m=strip_ge.search('gehelloworld')

if m==None:

print(m)

else:

print(m.group(1))

源代碼(注意源代碼的縮進(jìn))

一堆python的源碼,怎樣編譯成一個程序

例如有3個文件 main.cpp func.h func.cpp 你要別的程序用的函數(shù)和變量都要放在 func.h 中。 main.cpp: #include "func.h" main() { myvalue = myfunc(); } func.h #ifndef FUNCH // 避免重復(fù)定義,一定要有! #define FUNCH long myfunc(); // 讓別的cpp使用函數(shù) extern long myvalue; // 讓別的cpp使用變量 #endif func.cpp long myvalue; long myfunc() { return 10; } 用上面的方法,你有隨便多少個cpp都沒有問題。 當(dāng)然要保證你用的cpp和h已經(jīng)加入工程了。 好的習(xí)慣是將類似的函數(shù)放在同一個cpp, 每個類 用自己的cpp.

python使用ctypes調(diào)用C編譯dll函數(shù)方法

在函數(shù)聲明加入前綴,如

__declspec(dllexport) int Fun(int a, int b)

否則在加載該dll時會提示找不到該符號

在windows下可以通過vs自帶的dumpbin工具查看可被調(diào)用符號

dumpbin /exports test.dll

C函數(shù)在調(diào)用過程中關(guān)于參數(shù)傳遞和壓棧由多種規(guī)定,作為dll提供給其他程序調(diào)用時,必須明確并統(tǒng)一為同一種調(diào)用規(guī)定,否則會導(dǎo)致棧破壞,編譯器負(fù)責(zé)具體實現(xiàn)調(diào)用規(guī)定,主要有以下幾種調(diào)用規(guī)定

python下調(diào)用C庫有多種方式,ctypes是其中一種比較方便的,調(diào)用時首先需要加載dll文件,根據(jù)C dll的調(diào)用規(guī)定不同需要使用不同接口,使用ctypes需要 import ctypes 庫

對于簡單的C函數(shù),例如 int add(int a, int b) , 此時就可以直接調(diào)用了,如

對于較復(fù)雜的C函數(shù)的參數(shù)情況,ctypes調(diào)用時對入?yún)⒑统霾妥鲆欢ㄌ幚?,這里分情況討論

以上包含了幾種主要的參數(shù)傳遞情況,ctypes也提供了一個較為完整的python類型和C類型的對照,如下:

怎樣把Python代碼嵌入到C程序

步驟1:安裝Python開發(fā)包

由于需要訪問Python/C API,首先安裝Python開發(fā)包。

在Debian,Ubuntu或Linux Mint中:

在CentOS,F(xiàn)edora或RHEL中:

安裝成功后,Python頭文件在/usr/include/python2.7。根據(jù)Linux發(fā)行版的不同,確切的路徑可能是不相同的。例如,CentOS 6中是/usr/include/python2.6。

步驟2:初始化解釋器并設(shè)置路徑

C中嵌入Python的第一步是初始化Python解釋器,這可以用以下C函數(shù)完成。

初始化解釋器后,需要設(shè)置你的C程序中要導(dǎo)入的Python模塊的路徑。例如,比如你的Python模塊位于/usr/local/modules。然后使用以下C函數(shù)調(diào)用來設(shè)置路徑。

步驟3:數(shù)據(jù)轉(zhuǎn)換

C中嵌入Python最重要的方面之一是數(shù)據(jù)轉(zhuǎn)換。從C中傳遞數(shù)據(jù)到Python函數(shù),需要首先將數(shù)據(jù)從C數(shù)據(jù)類型轉(zhuǎn)換到Python數(shù)據(jù)類型。Python/C API提供各種函數(shù)來實現(xiàn)這。例如,轉(zhuǎn)換C字符串到Python字符串,使用PyString_FromString函數(shù)。

另外一個類似函數(shù)PyInt_FromLong,將C中l(wèi)ong數(shù)據(jù)類型轉(zhuǎn)換為Python int。每個Python/C API函數(shù)返回一個PyObject類型的引用。

步驟4:定義一個Python模塊

當(dāng)你想嵌入Python代碼到另一種語言如C,該代碼需要被寫成Python模塊,然后用另一種語言“導(dǎo)入”。所以讓我們來看看如何在C中導(dǎo)入Python模塊。

為了進(jìn)行說明,我們實現(xiàn)一個簡單的Python模塊例子如下:

以上的Python函數(shù)有一個字符串作為參數(shù)并返回兩個重復(fù)的字符串。例如,如果輸入字符串是“cyberpersons”,該函數(shù)返回'cyberpersonscyberpersons'。此模塊文件命名為“printData.py”并將它放在前面聲明的Python模塊目錄中(/usr/local/modules)。

步驟5:加載一個Python模塊

現(xiàn)在你已經(jīng)定義了Python模塊,是時候在C程序中加載它了。導(dǎo)入模塊的C代碼看起來像這樣:

步驟6:構(gòu)建函數(shù)的參數(shù)

當(dāng)加載一個模塊時,可以調(diào)用模塊中定義的Python函數(shù)。通常,我們需要傳遞一個或多個參數(shù)到一個Python函數(shù)。我們必須構(gòu)建一個Python元組對象,它包括Python函數(shù)中的參數(shù)。

在我們的例子中,printData函數(shù)定義帶一個參數(shù)的模塊。因此,我們構(gòu)建一個大小是一的Python元組對象如下。我們可以使用PyTuple_SetItem設(shè)置元組對象的每個項。

我們已經(jīng)成功構(gòu)建一個參數(shù)傳遞到函數(shù)調(diào)用,是時候從C程序調(diào)用python函數(shù)了。

步驟7:調(diào)用Python函數(shù)

一旦成功創(chuàng)建Python元組對象作為函數(shù)參數(shù),我們可以調(diào)用一個帶參數(shù)的Python函數(shù)。為此,通過使用PyObject_GetAttrString首先獲得模塊中定義的函數(shù)的引用,然后使用PyObject_CallObject調(diào)用該函數(shù)。例如:

步驟8:錯誤檢查

避免運(yùn)行時錯誤的常見方法是檢查函數(shù)的返回值并根據(jù)返回值采取適當(dāng)?shù)男袆?。類似于C程序中的全局變量errno,Python/C API提供一個全局指示符,它報告最后發(fā)生的錯誤。當(dāng)Python/C API函數(shù)失敗,全局指示符設(shè)置為指示錯誤,并且PyErr_Print可以用于顯示相應(yīng)的人類可讀的trackback。例如:

在你的應(yīng)用程序中,你可以輕松地將各種錯誤檢查。

這里是完整的C程序,它如本教程描述的嵌入Python代碼。

步驟9:編譯和執(zhí)行

保存以上代碼到finalCode.c,并且鏈接Python庫(-lpython2.7)編譯該代碼。根據(jù)發(fā)行版的不同,可能使用不同的版本(例如,-lpython2.6)。

當(dāng)前題目:python函數(shù)的編譯 Python編譯命令
本文鏈接:http://jinyejixie.com/article38/dodoipp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站設(shè)計軟件開發(fā)、靜態(tài)網(wǎng)站、服務(wù)器托管ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
霍州市| 苏尼特右旗| 长泰县| 盘山县| 新余市| 河曲县| 通州区| 扶风县| 东兰县| 湘乡市| 尤溪县| 札达县| 泰安市| 庄河市| 巩留县| 富顺县| 台北县| 双辽市| 林周县| 无极县| 杭州市| 石门县| 遂宁市| 巴楚县| 涟水县| 绍兴县| 鸡西市| 阳城县| 宝清县| 苏州市| 乾安县| 宁陕县| 长武县| 天峨县| 宝应县| 抚顺市| 伊宁市| 延安市| 宁波市| 比如县| 漠河县|