Özet - ctypes ve CFFI
- Python kursu
- Uzman
- Ders 24/47
- 5 dk
CDLL, types ve Structure'ı birleştirerek bir yerel sarmalayıcı yazarsın.
Özet: ctypes ve cffi
Bu grupta Python'dan yerel C kodunu çağırmayı öğrendin. CDLL ile kütüphane yükledin, c_int ve c_char_p ile C türlerini kullandın.
argtypes ve restype ile imza tanımladın. cffi'nin C sözdizimli alternatifini gördün. Structure ile C struct'larını modelledin. Şimdi bunları birleştirip bir yerel sarmalayıcı yazacaksın: bir Point yapısı ve abs çağrısı bir arada.
Uygulama Yerel sarmalayıcı yaz
import ctypes ile modülü içe aktar. Point(ctypes.Structure) sınıfı yaz; _fields_ = [('x', ctypes.c_int), ('y', ctypes.c_int)] tanımla. libc = ctypes.CDLL(None) ile kütüphaneyi yükle. Point(-3, 4) ile örnek oluştur. libc.abs(p.x) çağrısının sonucunu yazdır.
Başlangıç kodu
# Point yapısı ve libc yükle
# abs çağır ve yazdırÖrnek çözüm
import ctypes
class Point(ctypes.Structure):
_fields_ = [("x", ctypes.c_int), ("y", ctypes.c_int)]
libc = ctypes.CDLL(None)
p = Point(-3, 4)
print(libc.abs(p.x))Beklenen çıktı
3
Ne öğrendin?
Bu grupta Python ile yerel C kodu arasında köprü kurmayı öğrendin. CDLL ile kütüphane yükledin, C türlerini ve imza bildirimini kullandın.
cffi'nin C sözdizimli alternatifini gördün. Structure ile C struct'larını modelledin. Özet derste yapı ve fonksiyon çağrısını birleştirdin. Bu bilgi, sistem programlama ve performans kritik uygulamalar için önemlidir.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Tüm ctypes kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
CDLL |
Kütüphane yükler |
c_int |
C int türü |
argtypes |
Argüman türleri |
Structure |
C struct |
2 Hangi araç hangi iş?
- CDLL ile struct tanımlama
- argtypes ile imza tanımlama Doğru cevap
- Structure ile kütüphane yükleme
- cffi ile web sayfası
Açıklama: CDLL kütüphane, Structure yapı yükler.
3 Son boşluk
libc = ctypes.____(None)
libc = ctypes.CDLL(None)
Açıklama: CDLL(None) varsayılan C kütüphanesini yükler.