DANIDepp
DANIDepp
خواندن ۳ دقیقه·۲ سال پیش

چطور از سی پلاس پلاس (++C) در پایتون استفاده کنیم

خوب سلام سلام من دانیال هستم و قراره با هم امروز یک تکنیک خفن رو یاد بگیریم که چطور میشه از سی پلاس پلاس در پایتون استفاده کرد

خوب شاید بپرسید چه فایده ای داره اصلا این کار ؟

چند تا فایده خیلی عالی داره ولی من فقط دو تاشو میگم بهتون

سرعت

اولین و بهترین اتفاقی که وقتی از سی پلاس پلاس در پایتون (Python) استفاده میکنید اینکه سرعت اون بخشی از برنامتون که با سی پلاس پلاس نوشتید در پایتون عملا برابر با سرعت خود سی پلاس پلاس این یعنی ۵۰ تا ۶۰ برابر سریع تر از پایتون !

چون پایتون یک زبان مفسری هستش ولی سی پلاس پلاس یک زبان کامپایلری و در حقیقت با این کار انگار دارید خود کد سی پلاس پلاس رو ران میکنید

قابلیت ها

دومین خوبیش هم قابلیت هایی هست که شما در سی پلاس پلاس دارید ولی در پایتون ندارید.

یک سری کار ها هستند که پایتون یا نمیتونه اون کارو انجام بده یا کتابخونش هنوز درست نشده و نیاز به یک زبان سطح پایین تر هستش که شما میتونید از زبان هایی مثل سی یا سی پلاس پلاس برای اون بخش استفاده کنید.

یا حتی میتونید اگه بخشی در پایتون ناقص موند کتابخانه خودتون رو اختصاصی درست کنید چرا که نه


خوب حرف زدن دیگه بسه بریم یک راست سراغ آموزش

اول از همه من یک تابع سی پلاس پلاس دارم که فقط با فراخوانیش یک چیزی رو پرینت یا نمایش میده تو ترمینال.

حالا اگر بخوام از این تابع خارج از برنامه هام به عنوان مثلا یک کتاخونه یا در زبان های دیگه استفاده کنم به صورت پیشفرض نمیتونم پس مجبورم از قابلیتی استفاده کنم که سی و سی پلاس پلاس به من داده به نام

Extern "C"

این قابلیت باعث میشه که اگه تابعی داخل این تعریف کردیم خارج از برنامه و در زبان های دیگه هم و در زبان های دیگه هم (البته اگه تبدیل به کتابخونه با پسوند .so بشه) قابل استفاده باشه

کد نهایی به این شکل میشه

یک تابع تعریف کردم داخل extern به نام hello. این تابع hello تابعیه که خارج از برنامه قابل صدا زدنه و هر موقع یکی اونو صدا بزنه میاد و تابع print_hello رو برای من چاپ میکنه.

حالا چجوری از فایل سی پلاس پلاسمون خروجی کتابخونه بگیریم ؟

خیلی ساده با این دستور یک خروجی با پسوند so. میگیریم

حالا میریم سر وقت پایتون

برای استفاده از کتاخونه ها یا فایل های dll در پایتون نیاز به استفاده از کتابخونه ctypes که به صورت پیش فرض داخل پایتون هست داریم

این کتاخونه کارش کار با dll ها و کتاخونه هاست

کتابخونه ctypes رو ایمپورت (import) میکنیم و بعد مثل دستوری که تو عکس میبینم مکان کتابخانه ای که با سی پلاس پلاس ساختیم رو بهش میدیم و میندازیمش داخل یک متغیر

حالا هم فراخوانیش میکنیم و میبینم که واسمون تو ترمینال پرینت رو نمایش میده

بسیار هم عالی

اما یک سری سوال ها باقی میمونه‌ ؟

اگر توی سی پلاس پلاس تابعی داشتیم که ورودی میگرفت چی ؟ اگه اصلا یک خروجی به ما برمیگردوند (return) چجوری اونو بگیریم ؟

من واسه اون به انگلیسی یک ویدیو ساختم که البته خیلی سادس فقط کافیه ببینید برای دیدن بقیه راه کار ها میتونید این ویدیو رو که از صفر تا صد تو ۵ دقیقه توضیح دادم رو ببینید

https://youtu.be/XxzxVSC-5Dc

فعلا خدانگهدار

پایتونسی پلاس پلاسpythonبرنامه نویسی
یک دونه برنامه نویس
شاید از این پست‌ها خوشتان بیاید