الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

CFFI مكتبة مريحة للتعامل مع مكتبات السي

بدأه ahmed_youssef في 17 أغسطس 2012 · 4 رد · 642 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لفت نظري مكتبة CFFI كبديل رائع ل swig و ctypes -ربما ليس في كل الأحيان- ولكنها قطعا تستحق التجربة

أنظر لبعض الأمثلة

مثال على استدعاء printf

>>> from cffi import FFI
>>> ffi = FFI()
>>> ffi.cdef("""
...     int printf(const char *format, ...);   // copy-pasted from the man page
... """)
>>> C = ffi.dlopen(None)                     # loads the entire C namespace
>>> arg = ffi.new("char[]", "world")         # equivalent to C code: char arg[] = "world";
>>> C.printf("hi there, %s!\n", arg)         # call printf
hi there, world!

مثال اخر على passwd struct

from cffi import FFI
ffi = FFI()
ffi.cdef("""     // some declarations from the man page
    struct passwd {
        char *pw_name;
        ...;
    };
    struct passwd *getpwuid(int uid);
""")
C = ffi.verify("""   // passed to the real C compiler
#include <sys/types.h>
#include <pwd.h>
""")
p = C.getpwuid(0)
assert ffi.string(p.pw_name) == 'root'    # on Python 3: b'root'

مرفق في الdemos أمثلة لمكتبة curses وغيرها

https://bitbucket.org/cffi/cffi

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#2

الفكرة رائعة شكرا جزيلا

ولكن هل استخدامها عملي؟

اقصد لماذا استعمل اكواد الc

.Because it's FUN to be ALIVE

#3

كتير بتحتاج للوصول لمكتبات سي او كتابة جسور لها على سبيل المثال درايفرات MySQLdb و SQLite او curses او مكتبات الواجهات الرسومية مثل Tkinterو Qt و GTK+ و wxWidgets وكذلك بعض معالجات ال XML وغيرها كثيرمن مكتبات مكتوبة بالفعل ب C/C++

فالبرامج إما كود بايثون نقي 100% او جزء مكتوب بالسي وتخبر بايثون به لتستطيع إستخدامه عبر بايثون

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 18 أغسطس 2012 في 23:31

1
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#4

يعني الموضوع مالو علاقة بسرعة البرنامج او اخفاء الكود؟

.Because it's FUN to be ALIVE

#5

في كتير من الأوقات بتحتاج تعيد كتابة جزء بطئ في برنامجك بلغة سي وتستدعيه من بايثون ونفس الشئ لإخفاء الكود _ولو أنه ليس الهدف_

1
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

مواضيع مشابهة