2-5- درک اصول پایتون

محبوبیت زبان پایتون عمدتا به دلیل ساده بودن آن در شروع کار است. کد پایتون کوتاه است و می‌توانیم یک الگوریتم را در پایتون سریعتر از سایر زبان‌ها بنویسیم. به خاطر فراگیر بودن پایتون تعداد زیادی آموزش آنلاین در دسترستان است. جوامع فعالی برای پشتیبانی وجود دارد. همچنین کتابخانه­های زیادی برای اجرای برنامه در دسترس است. در دسترس بودن کتابخانه­های پایتون یکی از دلایل انتخاب این زبان نسبت به دیگر زبان‌ها است، زیرا با استفاده از یک کتابخانه و توابع موجوداش، می‌توانید زمان توسعه برنامه­تان را کاهش دهید.

پایتون یک پلتفرم متقابل[10] است که به طور گسترده در تحقیقات، شبکه، گرافیک، بازی، یادگیری ماشین، علوم داده و رباتیک استفاده می‌شود. بسیاری از شرکت‌ها از این زبان برای انجام اتوماتیک کردن کارهای خود استفاده می‌کنند. پس انجام کار در پایتون نسبتا آسان است.

خوب حالا سوال اساسی، یادگیری این زبان آسان یا دشوار است؟ اگر بتوانید شبه­کد[11] برای یک کار بنویسید، در Python می‌توانید کد بزنید، زیرا کد پایتون بسیار شبیه به شبه­کد است.

2-5-1- چه چیزی در پایتون جدید است؟

اگر C++ را بلد باشید یادگیری پایتون آسان خواهد بود، اما در هنگام نوشتن کد پایتون باید از چند چیز آگاهی داشته باشید.

2-5-1-1- نوشتن ثابت و پویا

پایتون یک زبان تایپ پویا است، بدان معنا که در هنگام برنامه‌نویسی نیازی به اظهار نوع داده متغیر نداریم؛ پایتون هر متغیر را به عنوان یک شیء می‌گیرد. ما می‌توانیم هر نوع داده را به یک نام اختصاص دهیم. در C++، ابتدا یک متغیر را به یک نوع داده اختصاص داده و سپس تنها می‌توانستیم آن نوع داده را در آن متغیر استفاده کنیم.

C++ یک زبان تایپ استاتیک است؛ به عنوان مثال، در C++ داریم:

int number;

number = 10;           //This will work

number = “10”         // This will not work

اما در پایتون:

#No need mention the datatype

number = 10             #This will work

number = “10”          #This will also work

پس، مقدار فعلی متغیر number برابر “10” است.

2-5-1-2- فاصله از لبه در کدنویسی

فاصله از لبه[12] در هر خط کد به معنی چند فضای خالی یا به اندازه یک tab قبل از شروع کد است. در C++، می‌توانیم فاصله از لبه را برای گروه بندی بلوکی از کد استفاده کنیم، اما اجباری نیست. کد C++ حتی اگر هیچ فاصله از لبه‌ایدر کد نباشد کامپایل می‌شود، اما در پایتون اینگونه نیست. باید یک بلوک کد در یک ردیف قرار گیرید؛ در غیر اینصورت، خطای فاصله از لبه را نشان می‌دهد. به خاطر اجباری بودن فاصله از لبه، کد منظم و خوانا به نظر می‌رسد.

2-5-1-3- نقطه ویرگول

در C/C++  نقطه ویرگول یا سمیکالون در انتهای هر عبارت اجباری هستند، اما در پایتون اینگونه نیست. در پایتون از نقطه ویرگول به عنوان جداکننده (و نه به عنوان پایان­دهنده) می‌توان استفاده کرد؛ به عنوان مثال، اگر بخواهید مجموعه­ای از دستورات را در یک خط کد بنویسید، می‌توانید آن‌ها را با نقطه ویرگول از هم جدا کنید که البته در C++ نیز می‌توان اینکار را انجام داد.

2-5-2- متغیرهای پایتون

در بخش قبل دیدید که پایتون چگونه متغیرها را مدیریت میکند. شکل 3-10 تخصیص و چاپ انواع داده­های اولیه مانند عدد صحیح، اعشاری، و رشته را نشان می‌دهد. این نمونه‌ها در نسخه پایتون 2.7.12 تست شده اند.

شکل ‏3‑10: مدیریت متغیرهای اولیه در پایتون

لیست‌ها[13] و تپه­ها[14] در پایتون مشابه آرایه­[15] در C/C++ هستند. به مقادیر داخل یک لیست میتوان از طریق شاخص لیست یعنی پرانتز مربعی ([]) دسترسی یافت؛ به عنوان مثال، اولین عنصر در یک لیست می‌تواند توسط [0] قابل دسترسی باشد که مشابه با یک آرایه در C/C++ است.

شکل 3-11 و 3-12 لیست و تپه در پایتون را نشان می‌دهد.

شکل ‏3‑11: مدیریت فهرست در پایتون

شکل 3-12 نشان می‌دهد که چگونه می‌توانیم با تپه پایتون کار کنیم.

شکل ‏3‑12: مدیریت تپلس در پایتون

تپه­ها به طرز مشابه به لیست کار می‌کنند، اما یک تپه داخل پرانتز (()) تعبیه شده و یک لیست داخل پرانتز مربعی ([]) تعبیه می‌شود. یک تپه فقط خواندنی است زیرا مقادیرش نمی‌توانند پس از آن مقداردهی اولیه به روز شوند، اما در لیست می‌توانیم مقادیر را به روز کنیم.

نوع دیگری از داده داخلی که پایتون ارائه می‌کند فرهنگ لغت[16] است. همانند یک فرهنگ لغت واقعی، یک کلید و یک مقدار مرتبط با آن وجود دارد. به عنوان مثال، در فرهنگ لغت ما یک کلمه و معنای متناظر با آن وجود دارد. کلمه در اینجا کلید و مقدار معنای آن است.

شکل ‏3‑13: مدیریت یک فرهنگ لغت در پایتون

اگر کلید را در فرهنگ لغت قرار دهیم، مقدار مربوط به کلید بازگردانده می‌شود.

در بخش بعدی، بیان شرطی در پایتون را مرور می‌کنیم.

2-5-3- ورودی پایتون و بیان شرطی

پایتون مشابه C++ دارای بیانیه if / else برای بررسی یک شرط است. در مثال زیر خواهید دید چگونه پایتون واردی کاربر را مدیریت کرده و بر اساس آن تصمیم گیری می‌کند.

منطق برنامه ساده است. این برنامه از کاربر می‌خواهد دستوری برای حرکت یک ربات وارد کند. اگر ورودی کاربر یک دستور معتبر یعنی move_left، move_right، move_forward یا move_backward باشد، برنامه آنرا حرکت ربات به آن سمت را چاپ می‌کند؛ در غیر این صورت، دستور نامعتبر را چاپ می‌کند (به شکل 3-14 نگاه کنید).

شکل ‏3‑14: مدیریت ورودی و بیان شرطی در پایتون

برای گرفتن ورودی کاربر در پایتون می‌توانیم از تابع raw_input() یا تابع input() استفاده کنیم. تابع raw_input() هر نوع داده­ای را می‌پذیرد، اما تابع input() فقط اعداد صحیح را می‌پذیرد. نحوه­ی عملکرد raw_input() و input() به شکل زیر است.

var = raw_input(“Input message”)

var = input(“Input message”)

raw_input() ورودی کاربر را در متغیری به‌نام var به عنوان یک رشته ذخیره می‌کند.

پس از ذخیره سازی ورودی کاربر، ورودی را با لیستی از دستورات مقایسه می‌کنیم. نحوه­ی عملکرد if/else به شکل زیر است.

if expression1:

statement(s1)

elif expression2:

statement(s2)

else:

statement(s3)

دونقطه هر عبارت را پایان می‌دهد، بعد از آن برای نوشتن بیانیه باید از فاصله از لبه استفاده کنید. اگر از فاصله از لبه استفاده نکنید، خطا دریافت خواهید کرد.

2-5-4- پایتون : حلقه‌ها

پایتون حلقه­های while و for را دارد، اما حلقه­یdo while  را ندارد. شکل 3-15 استفاده از حلقه while و حلقه for در پایتون را نشان می‌دهد. در این مثال، موقعیت ربات در جهت x و y افزایش می‌یابد تا به یک موقعیت خاص برسد، سپس برنامه بعد از چاپ یک پیام متوقف می‌شود.

شکل ‏3‑15: کاربرد حلقه while در پایتون

نحوه­ی عملکرد یک حلقه while به شکل زیر است.

while expression:

statement(s)

در مثال قبلی، expression به صورت (robot_x <2 and robot_y <2) بود. در این عبارت دو شرط وجود دارد. منطق AND را بین دو شرط اعمال کردیم. در پایتون، ‘and’ و ‘or’ به ترتیب بیانگر منطق AND و منطق OR هستند.

اگر شرط درست باشد، دستورات داخلی اجرا می‌شوند. همانطور که قبلا ذکر شد، باید از فاصله از لبه به درستی استفاده کنیم. هنگامی‌که شرط نادرست باشد، از حلقه خارج شده و پیام “Reached destination” چاپ می‌شود.

اگر کد را اجرا کنیم، خروجی نمایش داده شده در شکل 3-16 را دریافت خواهیم کرد.

شکل ‏3‑16: خروجی حلقه while کد پایتون

می‌توانیم همان برنامه را با استفاده از حلقه for پایتون اجرا کنیم. شکل 3-17 عملکرد حلقه for را نشان می‌دهد.

شکل ‏3‑17: پایتون برای کد حلقه

در این کد، حلقه for از 0 تا 100 اجرا می‌شود، robot_x و robot_y را افزایش داده و بررسی می‌کند آیا موقعیت ربات در محدوده است یا خیر. اگر از حدود تجاوز شود، پیامی‌چاپ کرده و حلقه for را می‌شکند.

نحوه­ی عملکرد حلقه for در پایتون به شکل زیر است.

for iterating_var in sequence:

statements(s)

شکل 3-18 خروجی کد قبلی است.

شکل ‏3‑18: خروجی پایتون کد حلقه for

2-5-5- پایتون : توابع

همانطور که می‌دانید، اگر بخواهید بلوکی از کد با داده‌های مختلف را تکرار کنید، می‌توانید آن را به عنوان یک تابع بنویسید. اکثر زبان‌های برنامه‌نویسی دارای ویژگی تعریف تابع هستند.

فرمت زیر تعریف تابع در پایتون را بیان می‌کند.

def function_name(parameter):

“function_docstring”

function_code_block

return [expression]

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

”’

<Block of code>

”’

شکل 3-19 مثالی از تابع در پایتون را نشان می‌دهد.

شکل ‏3‑19: مثال کد پایتون برای تابع

در شکل 3-19، چگونگی تعریف تابع در پایتون و نحوه ارتباط با آن را می‌بینید. احتمالا عبارت __name__ == “__main__” باعث سردرگمی­تان شده است. این عبارت اساسا روشی معمول مانند استفاده از int main() در C++ است. برنامه بدون این خط نیز کار می‌کند.

اگر هر کدام از دستورات را وارد کنید، تابع مناسب آن فراخوانده می‌شود. توابع در بالای کد تعریف شده­اند. همچنین به فاصله از لبه در هر بلوک کد توجه کنید. تابع تعریف شده در شکل 3-20 هیچ گزاره­ای ندارد، اما اگر بخواهید می‌توانید گزاره­ای به یک تابع منتقل کنید.

شکل ‏3‑20: خروجی تابع پایتون

2-5-6- پایتون : مدیریت استثناها

استثنا رویدادی است که جریان نرمال اجرای برنامه را مختل می‌کند. هنگامی‌که پایتون با مشکلی مواجه می‌شود، استثنائی را برمی­انگیزد. اگر استثنائی دریافت کردیم، بدان معنا است که برنامه با خطایی مواجه شده است. اگر کد استثنائی را برانگیزد، می‌تواند استثناء را مدیریت کرده یا برنامه را خاتمه دهد. در این بخش، شاهد چگونگی رسیدگی به یک استثناء در پایتون خواهیم بود.

نمونه­ی ساده­ای از بیانیه try-except تقسیم بر صفر است. شکل 3-21 کد نمونه برای try-except را نشان می‌دهد.

شکل ‏3‑21: نمونه کد پایتون try-except

هر وقت ورودی کاربر صفر باشد، به دلیل تقسیم به صفر، استثناء برانگیخته شده و این استثناء، عبارت داخل except را مدیریت می‌کند.

2-5-7- پایتون : کلاس‌ها

این بخش نحوه نوشتن یک کلاس در پایتون را نشان می‌دهد. همانطور که گفته شد، پایتون یک زبان برنامه‌نویسی شی گرا مانند C++ است. مفاهیم OOP در هر دو زبان یکسان هستند. نحوه­ی تعریف کلاس در پایتون به شکل زیر است.

class ClassName:

‘Optional class documentation string’

class_suite

در اینجا داکسترینگ جزئی اختیاری بوده و class_suite حاوی اعضای کلاس، توابع، و صفات داده­ها است. کلاس در پایتون مفهوم وسیعی دارد. بگذارید نگاهی به شکل 3-22 به عنوان مثالی اساسی برای شروع کار با کلاسها بیاندازیم.

شکل ‏3‑22: مثالی از کلاس پایتون

شکل 3-22 مثالی از حرکت ربات به جلو، چپ، راست و عقب را نشان می‌دهد. برنامه در واقع یک ربات را حرکت نمی‌دهد بلکه پیامی‌را چاپ می‌کند. بیایید هر قسمت از برنامه را تجزیه و تحلیل کنیم.

کد زیر سازنده کلاس پایتون است. هر وقت شیء از این کلاس ایجاد کنیم، ابتدا این کد اجرا می‌شود. self اشاره­ای به شیء فعلی است.

def __init__(self):

print “Started Robot”

تابع زیر تخریبگر کلاس است. هرگاه شیء بخواهد از بین رود، تخریبگر فراخوانده می‌شود.

def __del__(self):

print “Robot stopped”

می‌توانیم روش­ها[17] را در داخل کلاس تعریف کنیم همانطور که اینکار را قبلا انجام دادیم. در تمام روش­ها، اولین گزاره باید self باشد، که تابع را داخل کلاس می‌سازد. می‌توانیم گزاره­ای به یک تابع بفرستیم در مثال زیر، distance یک گزاره است.

def move_forward(self,distance):

print “Robot moving forward: “+str(distance)+”m”

در این تابع، توابعی برای حرکت به عقب، راست و چپ وجود دارد.

حالا بیایید ببینیم چگونه یک شی از کلاس ایجاد کنیم. خط زیر یک شیء ایجاد می‌کند. درهنگام ایجاد یک شیء، سازنده کلاس فراخوانده می‌شود.

obj = Robot()

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

obj.move_forward(2)

obj.move_backward(2)

obj.move_left(2)

obj.move_right(2)

درهنگام پایان یافتن یک برنامه، شیء تخریبگر را فرا می‌خواند.

شکل 3-23 خروجی مثال قبلی را نشان می‌دهد.

شکل ‏3‑23: خروجی مثال کلاس پایتون

در بخش بعد، یاد می‌گیریم چگونه فایل‌ها را در پایتون مدیریت کنیم.

2-5-8- پایتون : فایل‌ها

نوشتن و خواندن فایل­ها در کاربردهای رباتیک مهم است. ممکن است بخواهید از لاگ فایل حسگر اطلاعاتی بگیرید یا پیکربندی فایلی را بنویسید. این بخش مثالی از پایتون برای نوشتن و خواندن متن در یک فایل ارائه می‌کند (به شکل 3-24 نگاه کنید).

شکل ‏3‑24: مثال ورودی خروجی فایل در پایتون

هنگام اجرای کد، از شما خواسته می‌شود متنی وارد کنید. داده­ی متنی را در یک فایل ذخیره می‌کند. سپس آن فایل را فراخوانده و بر روی صفحه نمایش چاپ می‌کند. شرح کد پایتون در زیر آمده است.

دستور زیر مدیریت فایل را در حالت خواندن و نوشتن ایجاد می‌کند. مانند C/C++، چند حالت عملیات فایل مانند خواندن، نوشتن و افزودن[18] وجود دارد. در این مورد، ما از حالت w+ استفاده می‌کنیم که در این حالت می‌توان فایل را بخوانیم/ بنویسیم. اگر یک فایل موجود باشد، روی آن نوشته می‌شود.

file_obj = open (“test.txt”، “+w”)

برای نوشتن روی یک فایل، می‌توانیم از دستور زیر استفاده کنیم که text را در فایل می‌نویسد.

file_obj.write(text)

برای بستن فایل، از عبارت زیر استفاده می‌کنیم.

file_obj.close()

برای خواندن مجدد فایل، از حالت ‘r’ ، مانند زیر استفاده می‌کنیم.

file_obj = open(“test.txt”,’r’)

برای خواندن یک خط از فایل، می‌توانیم از تابع readline() استفاده کنیم.

text = file_obj.readline()

شکل 3-25 خروجی مثال قبلی را نشان می‌دهد.

شکل ‏3‑25: نتیجه ورودی خروجی فایل پایتون

2-5-9- پایتون : ماژول‌ها

C++ از فایل‌های سربرگ برای شمول یک کلاس جدید یا مجموعه‌ایاز کلاس‌ها استفاده می‌کند. در پایتون، به جای فایل‌های سربرگ، از ماژول‌ها استفاده می‌کنیم. یک ماژول ممکن است حاوی کلاس، تابع یا متغیرها باشد. ماژول را می‌توانیم در کدمان با استفاده از دستور import وارد کنیم. نحوه­ی عملکرد import در زیر آمده است.

import <module_name>

مثال: import os; import sys

ماژول‌هایی استاندارد در پایتون وجود دارد.

اگر تعدادی کلاس در یک ماژول وجود داشته باشد و ما تنها به یک کلاس خاص نیاز داشته باشیم، می‌توانیم از خط زیر استفاده کنیم.

from <module_name> import <class_name>

مثال: from os import system

یک ماژول، یک کد پایتون است، ولی ماژول‌های خودمان را نیز می‌توانیم ایجاد کنیم. شکل 3-26 ماژول تست را نشان می‌دهد که می‌توانیم آنرا به کدمان وارد کرده و تابع داخل آن را اجرا کنیم.

شکل ‏3‑26: ماژول سفارشی تست پایتون

فایل test.py دارای تابعی به‌نام execute() است که متنی را که درواقع گزاره تابع است چاپ می‌کند.

خطی از کد در مترجم پایتون شکل 3-27 نشان می‌دهد که چگونه از ماژول تست استفاده کنید.

شکل ‏3‑27: مازول تست پایتون

لازم به ذکر است که فایل test.py باید در مسیر مشابه برنامه یا پوسته پایتون باشد؛ برای مثال، اگر test.py در پوشه دسکتاپ است، مسیر جاری پوسته نیز باید همان پوشه دسکتاپ باشد.

هنگام آزمایش، ماژول تست را با استفاده از بیانیه import وارد کرده و با استفاده از عبارت زیر شیء به‌نام obj ایجاد می‌کنیم.

obj = test.Test ()

بدینگونه به کلاس Test() درون ماژول test دسترسی می‌یابیم. پس از ایجاد شیء، می‌توانیم به تابع execute() دسترسی پیدا کنیم.

جهت اطلاعات بیشتر به آموزش ساده Python در وب[19] مراجعه کنید

2-5-10- پایتون : مدیریت پورت‌های سریال

هنگام ساخت ربات، ممکن است مجبور به اتصال حسگرها یا بوردهای میکروکنترلر مختلف به یک لپ تاپ یا رایانه­ی تک بوردی مانند رزبری­پای[20] شویم. بسیاری از ارتباطات از طریق اتصال USB یا UART[21] است. با استفاده از پایتون، می‌توانیم به یک پورت سریال روی رایانه بنویسیم/بخوانیم. این امر به خواندن داده‌ها از حسگر­ها/عملگرها و نوشتن دستورات کنترلی روی عملگردهای کمک می‌کند.

پایتون دارای ماژولی به‌نام PySerial برای ارتباط با پورت سریال/پورت com در رایانه است[22]. کار با این ماژول بسیار آسان است. بیایید به نحوه خواندن/ نوشتن به یک پورت سریال در اوبونتو با استفاده از پایتون نگاهی بیاندازیم.

2-5-11- نصب PySerial در اوبونتو 16.04

نصب PySerial کاری بسیار آسان در اوبونتو است. فقط کافی است دستورات زیر را وارد کنید:

$ sudo apt-get update

$ sudo apt-get install python-serial

پس از نصب ماژول، دستگاه سریال خود را وصل کنید که می‌تواند دستگاهUSB به سریال یا سریال واقعی باشد. دستگاه USB به سریال، پروتکل USB را به پروتکل UART تبدیل می‌کند. دوتا از محبوب ترین تراشه‌های USB به سریال موجود در بازار عبارتند از:

هنگامی‌که دستگاه دارای این تراشه‌ها را به دستگاهی دارای سیستم‌عاملی مبتنی بر لینوکس وصل می‌کنید، به طور خودکار درایور دستگاه را بارگذاری کرده و یک دستگاه سریال ایجاد می‌کند. درایورهای دستگاه FTDI و Prolific در هسته لینوکس موجود هستند. نام دستگاه سریال را می‌توانید با اجرای دستور dmesg دریافت کنید. این دستور نشان دهنده پیام هسته است (به شکل 3-28 نگاه کنید).

$ dmesg

شکل ‏3‑28: خروجی dmesg، نام دستگاه سریال را نشان می‌دهد

وقتی دستگاه سریال را به رایانه وصل کرده و دستور dmesg را اجرا می‌کنید، نام دستگاه سریال را می‌بینید که در اینجا /dev/ttyUSB0 است.

برای برقراری ارتباط با دستگاه، ممکن است مجبور باشید مجوز دستگاه را تغییر دهید. در این مواقع می‌توانید از دستور chmod برای تغییر مجوز استفاده کنید یا می‌توانید کاربر فعلی را به گروه dialout که به پورت سریال دسترسی می‌دهد، اضافه کنید

تغییر مجوز دستگاه سریال با دستور chmod به شکل زیر است.

$ sudo chmod 777 /dev/ttyUSB0

اضافه کردن یک کاربر به گروه dialout نیز به شکل زیر است.

$ sudo adduser $USER dialout

پس از انجام این کار، از کد نمایش داده شده در شکل 3-29 برای دسترسی به پورت سریال استفاده کنید.

شکل ‏3‑29: کد مثال پایتون برای نوشتن روی یک پورت سریال

در این کد، با نگاه به قطعه کد زیر ماژول سریال وارد شده را می‌بینید.

import serial

دستور زیر برای باز کردن پورت سریال با سرعت داده شده است.

ser = serial.Serial(‘/dev/ttyUSB0’,9600)

دستور زیر برای نوشتن در پورت سریال است:

ser.write(‘Hello’)

در زیر نحوه خواندن از پورت سریال آمده است.

text = ser.readline()

همچنین می‌توانید از دستور زیر استفاده کنید.

text = ser.read() #This will read 1 byte of data

text = ser.read(10) # read 10 bytes of serial data

کد قبلی می‌تواند با آردوینو، رزبری­پایry Pi و سایر دستگاه­های دارای حسگر سریال ارتباط برقرار کند. در مورد برنامه‌نویسی سریال پایتون در وب[25] می‌توانید اطلاعات بیشتری بیابید.

2-5-12- پایتون : تجسم و محاسبات علمی

در این بخش، شما با برخی کتابخانه‌های محبوب پایتون برای محاسبات علمی‌و تجسم آشنا می‌شوید.

  • Numpy[26]: بسته اصلی برای محاسبات علمی.
  • Scipy[27]: نرم‌افزار متن­باز برای ریاضیات، علوم و مهندسی.
  • Matplotlib[28] : کتابخانه دوبعدی ترسیمی‌پایتون که شکل‌هایی با کیفیت انتشاراتی تولید می‌کند.

2-5-13- پایتون : یادگیری ماشین و یادگیری ژرف

پایتون برای پیاده سازی یادگیری ماشین و یادگیری عمیق بسیار مشهور است. کتابخانه‌های محبوب پایتون در این زمینه عبارتند از:

  • TensorFlow[29]: کتابخانه­ای متن‌باز برای محاسبات عددی با استفاده از نمودار جریان داده.
  • Keras[30]: یک API شبکه عصبی سطح بالا که توانایی استفاده از TensorFlow و Theano را به عنوان یک بک اند دارد.
  • Caffe[31]: یک چارچوب یادگیری عمیق که توسط پژوهشکده برکلی ای­آی[32] و مشارکت کنندگان داوطلب ایجاد شده است.
  • Theano[33]: کتابخانه پایتون که به شما امکان می‌دهد تا به طور موثری عبارات ریاضی حاوی آرایه‌های چند بعدی را تعریف، بهینه سازی و ارزیابی کنید.
  • Scikit-learn[34]: کتابخانه­ی ساده یادگیری ماشین در پایتون.

2-5-14- پایتون: بینایی رایانهی

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

  • OpenCV[35]: بینایی رایانهی متن‌باز که برای استفاده دانشگاهی و تجاری، رایگان بوده و دارای رابط C++، C، Python و Java است و از ویندوز، لینوکس، سیستم‌عامل مک، iOS و اندروید نیز پشتیبانی می‌کند.
  • PIL[36] : کتابخانه تصویر سازی پایتون که قابلیت‌های پردازش تصویر را به مترجم پایتون اضافه می‌کند.

2-5-15- پایتون: رباتیک

پایتون یک رابط خوب برای برنامه‌نویسی رباتیک با استفاده از رآس دارد. جهت اطلاعات بیشتر در مورد قابلیت‌های پایتون با استفاده از رآس می‌توانید به وب[37] مراجعه کنید:

2-5-16- پایتون: IDEs

برخی از IDE[38]‌ها (محیط توسعه یکپارچه) به توسعه و خطایابی سرعت و سهولت می‌بخشند. در زیر سه IDE رایج را می‌بینید:

[10] cross-platform

[11] Pseudo code

[12] Indentation

[13] lists

[14] tuples

[15] array

[16] dictionary

[17] methods

[18] appending

[19]  www.tutorialspoint.com/python/

[20] Raspberry Pi

[21] https://learn.sparkfun.com/tutorials/serial-communication

[22] https://pythonhosted.org/pyserial/

[23]  www.ftdichip.com

[24] www.prolific.com.tw/US/company.aspx?id=1

[25]  http://pyserial.readthedocs.io/en/latest/shortintro.html

[26]   www.numpy.org

[27] www.scipy.org

[28] http://matplotlib.org

[29] www.tensorflow.org

[30] https://keras.io/

[31] http://caffe.berkeleyvision.org

[32] Berkeley AI Research

[33] http://deeplearning.net/software/theano/

[34] http://scikit-learn.org/

[35] https://opencv.org

[36] www.pythonware.com/products/pil/

[37] http://wiki.ros.org/rospy

[38] integrated development environments

[39] www.jetbrains.com/pycharm/

[40] www.geany.org

[41] https://github.com/spyder-ide