Python路上之Python呼叫C

2021-08-14 18:33:04 字數 943 閱讀 8964

(1)c++類檔案:pycallclass.cpp

#include 

using

namespace

std;

class testlib

; void testlib::display()

void display_int(int a)

}//可以由python呼叫的關鍵,只能呼叫c函式,但可以通過上述方式將c++中的類方法給解析出來。首先生成乙個物件 obj(為了呼叫這個類中定義的方法),然後定義幾個c函式(這是為了能夠被python呼叫),c函式的實現由obj的類方法實現(類方法相當與間接實現c函式)。

(2)python呼叫動態庫的檔案:pycallclass.py

import ctypes  

so = ctypes.cdll.loadlibrary

lib = so("./libpycallclass.so")

print

'display()'

lib.display()

print

'display(100)'

lib.display_int(100)

(3)在檔案目錄下

>>>g++ -o libpycallclass.so -shared -fpic pycallclass.cpp

# 首先把pycallclass.cpp 整成乙個叫作 libpycallclass.so的包,下面才可以由.py呼叫,呼叫的包的位置取決於g++把這個包放到**了

>>> python pycallclass.py

display()

first display

display(100)

second display:100

2020612自學python路上的又乙個小峭壁

今天這第2次做這個道題,發現了原來寫題的乙個錯誤點。但也是今天到現在1個小時了還沒有分析明白的核心。怎麼去判定被輸入的數不是16位,比如例題中你書g系統提示你invalid input。下面這三行是指考慮輸入乙個十六進製制字元然後顯示十進位制整數。number input enter a hex c...

Python學習之路上的幾個經典問題

語法如下 on true if expression else on false 如果 expression 為true,則表示式的值為 on true 否則為 on false 示例如下 使用not判斷list是否為空,是相當pythonic的方法。示例如下 使用乙個額外的狀態變數是想當non p...

python學習之路上的一些小筆記

在學習python的過程中,我積累了不少的筆記以及練習,但是疏於整理正好時至春節放假之際,再加上新型冠狀病毒的肆虐。各個村 小區都已經封鎖,實在無聊對我考完研究生之後學習python到現在的筆記進行記錄一下,這是在家裡學習的一部分,還有在學校的一部分寫在這裡作為提醒寫在這裡,以及進行時不時的回憶 程...