新聞中心
C++types是python的一個(gè)外部庫,可以使用python語言調(diào)用已經(jīng)編譯好的C語言函數(shù)以及數(shù)據(jù)類型并進(jìn)行數(shù)據(jù)交換等。ctypes的官方文檔在https://docs.python.org/3/library/ctypes.html

10多年的潁州網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整潁州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“潁州網(wǎng)站設(shè)計(jì)”,“潁州網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
1、ctypes基本數(shù)據(jù)類型映射表
2、python調(diào)用c語言的函數(shù)庫
(1)生成c語言函數(shù)
#Step 1: test.c #includeint add(int a, int b) { return a + b; }
(2)編譯動(dòng)態(tài)鏈接庫生成 libtest.so文件(DLL)
gcc -fPIC -shared test.c -o libtest.so
(3)調(diào)用DLL文件
#Step 3: test.py
from ctypes import *
mylib = CDLL("libtest.so")或者cdll.LoadLibrary("libtest.so")
add = mylib.add
add.argtypes = [c_int, c_int] # 參數(shù)類型,兩個(gè)int(c_int是ctypes類型,見上表)
add.restype = c_int # 返回值類型,int (c_int 是ctypes類型,見上表)
sum = add(3, 6)3、指針和引用
對(duì)指針實(shí)例賦值只會(huì)改變其指向的內(nèi)存地址,而不是改變內(nèi)存的內(nèi)容。指針實(shí)例有一個(gè)contents屬性,返回這個(gè)指針?biāo)赶虻膶?duì)象。
from ctype import * i = c_int(1) pi = POINTER(c_int)(i) pi2 = pointer(i) print pi.contents #返回指針指向?qū)ο蟮闹?print pi2.contents
pointer 和 POINTER 的區(qū)別是,pointer 返回一個(gè)實(shí)例,POINTER 返回一個(gè)類型。
4、結(jié)構(gòu)類型數(shù)據(jù)
Structures和Unions必須繼承Structure和Union基礎(chǔ)類,它們都在ctypes模塊中定義,每一個(gè)子類必須定義個(gè)fields屬性,fields是一個(gè)二維的tuples列表,包含著每個(gè)field的name及type,這field類型必須是一個(gè)ctypes類型,如c_int,或者任何其他的繼承ctypes的類型,如Structure、Union、Array、指針等。
from ctypes import *
import types
class Test(Structure):
_fields_ = [('x', c_int),('y', c_char)]
test1 = Test(1, 2)如結(jié)構(gòu)體用于鏈表操作,即包含指向結(jié)構(gòu)體指針時(shí),則需如下定義:
from ctypes import *
import types
class Test(Structure):
pass
Test._fields_ = [('x', c_int),('y', c_char),('next', POINTER(Test))]python學(xué)習(xí)網(wǎng),大量的免費(fèi)python視頻教程,歡迎在線學(xué)習(xí)!
當(dāng)前標(biāo)題:創(chuàng)新互聯(lián)Python教程:c怎么與python交互
網(wǎng)站路徑:http://fisionsoft.com.cn/article/cccpcgp.html


咨詢
建站咨詢
