آشنایی با کتابخانه های پایتون

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

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

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

 

 

معرفی پایتون

  1. پایتون یک زبان برنامه نویسی سطح بالا (زبان هایی که به زبان انسان نزدیکتر هستند و به نوعی ساده‌تر هستند)
  2. همه منظوره (با پایتون می‌توانید برای هر دستگاهی برنامه‌نویسی کنید)
  3. متن باز (می‌توانید آن را تغییر دهید و نسخه‌ی بهتری ارائه دهید)
  4. شی گرا است (زبان‌هایی که براساس قوانین دنیای ما ساخته شده اند مثل داشتن شی و خصوصیت شی).

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

 

از دیگر ویژگی های مهم و فوق العاده ی زبان پایتون سادگی و قابلیت خوانایی بالای کدهای آن است. این خوانایی بالا شما را در کارهای تیمی بسیار جلو می اندازد. کدها در پایتون دارای کوتاهی و بازدهی بالایی هستند که از شرکت های بزرگی که از پایتون استفاده می کنند می توان به گوگل، ناسا و یاهو نام برد (فقط به معرفی اجمالی پایتون پرداختیم تا سریع تر به سراغ کتابخانه های پایتون برویم).

 

 

تنسور فلو  TensorFlow

اگر شما در حال کار بر روی یک پروژه ی ماشین لرنینگ (یادگیری ماشین یا ماشین لرنینگ یعنی دادن قابلیت یادگیری به ماشین ها اعم از نرم افزارها یا خودروها) هستید، حتما اسم TensorFlow را شنیده اید.

یکی از بهترین کتابخانه های یادگیری ماشین در پایتون است (کتابخانه های زیادی برای ماشین لرنینگ در پایتون وجود دارند و برای همین است که انتخاب اول کسانی که می خواهند با ماشین لرنینگ کار کنند پایتون است) تنسور فلو (TensorFlow) توسط شرکت گوگل و Brain Team ساخته شده است و متن باز است (تنسور تقریبا در تمام اپلکیشن های یادگیری ماشین گوگل استفاده شده است).

 

 

همچنین از این کتابخانه جهت اهداف یادگیری عمیق (زیر شاخه ای از یادگیری ماشین) و محاسبات عددی نیز استفاده می شود.

تنسور فلو در کجا استفاده شده است؟

شما در حال استفاده از تنسور فلو بصورت روزانه هستید، البته غیر مستقیم، اپلیکیشن هایی نظیر GoogleVoice و GooglePhotos توسط این کتابخانه توسعه داده شده اند.

 Django

در مقاله ی پیش رو ما از زبان برنامه نویسی پایتون گفتیم و این نکته را ذکر کردیم که پایتون یک زبان برنامه نویسی همه منظوره است که یعنی می توانید با پایتون برای تمام سیستم عامل ها نرم افزار بنویسید.

تمام همه منظوره بودن پایتون به لطف کتابخانه های آن است. Django فریمورکی (فریمورک مجموعه ای از کتابخانه های کوچک و بزرگ است) از پایتون جهت طراحی سایت است، اگر می خواهید که با پایتون وبسایت طراحی کنید.

 

اولین انتخاب Django است (آموزش های زیادی برای این فریمورک وجود دارد) چنانچه دوست دارید که در محیط پایتون یک وبسایت بسازید، یا حتی یک سیستم مدیریت محتوای سایت و یا وبلاگ شخصی و اپلیکیشن تحت وب از این فریمورک استفاده کنید.

اسکیت لرن Scikit-learn

اسکیت لرن(Scikit-learn) یکی از کتابخانه های محبوب حوزه ماشین لرنینگ در پایتون است. این کتابخانه شامل ابزارهای ساده و کارآمد برای داده کاوی و تحلیل داده است از کاربردهای اسکیت لرن می توان به موارد زیر اشاره کنیم:

  • طبقه بندی: مشخص کردن اینکه یک شی متعلق به کدام دسته است
  • Regression: پیش بینی یک ویژگی با ارزش مداوم در ارتباط با یک شی
  • خوشه بندی: گروه بندی اتوماتیک شی ها شبیه به هم درون یک مجموعه
  • کاهش ابعاد: کاهش تعداد متغیرهای تصادفی برای رسیدگی کردن؛ اگر مفاهیم برای شما روشن نیست بخاطر این است که از مفاهیم علمی پایتون و ماشین لرنینگ چیزی نمی دانید نگران نباشید
  • انتخاب مدل: مقایسه، اعتبار سنجی و انتخاب پارامترها و مدل ها
  • پیش پردازش: استخراج ویژگی ها و نرمال سازی

 

 

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

نسخه ی نمایشی از خوشه بندی سلسله مراتبی بخش ساختار یافته بر روی تصویر سکه ها:

تقسیم بندی یک تصویر دو بعدی را با خوشه بندی سلسله مراتبی Ward محاسبه شده است. خوشه بندی به صورت مکانی محدود است تا هر منطقه تقسیم شده در یک قطعه باشد.

(اگر چیزی متوجه نمی شوید به دلیل این است که با مفاهیم تخصصی آشنایی ندارید این مثال از وبسایت https://scikit-learn.org آورده شده است).

print(__doc__)

import time as time

import numpy as np
from distutils.version import LooseVersion
from scipy.ndimage.filters import gaussian_filter

import matplotlib.pyplot as plt

import skimage
from skimage.data import coins
from skimage.transform import rescale

from sklearn.feature_extraction.image import grid_to_graph
from sklearn.cluster import AgglomerativeClustering

# these were introduced in skimage-0.14
if LooseVersion(skimage.__version__) >= '0.14':
rescale_params = {'anti_aliasing': False, 'multichannel': False}
else:
rescale_params = {}

# Generate data
orig_coins = coins()

# Resize it to 20% of the original size to speed up the processing
# Applying a Gaussian filter for smoothing prior to down-scaling
# reduces aliasing artifacts.
smoothened_coins = gaussian_filter(orig_coins, sigma=2)
rescaled_coins = rescale(smoothened_coins, 0.2, mode="reflect",
**rescale_params)

X = np.reshape(rescaled_coins, (-1, 1))

# Define the structure A of the data. Pixels connected to their neighbors.
connectivity = grid_to_graph(*rescaled_coins.shape)

# Compute clustering
print("Compute structured hierarchical clustering...")
st = time.time()
n_clusters = 27 # number of regions
ward = AgglomerativeClustering(n_clusters=n_clusters, linkage='ward',
connectivity=connectivity)
ward.fit(X)
label = np.reshape(ward.labels_, rescaled_coins.shape)
print("Elapsed time: ", time.time() - st)
print("Number of pixels: ", label.size)
print("Number of clusters: ", np.unique(label).size)

# Plot the results on an image
plt.figure(figsize=(5, 5))
plt.imshow(rescaled_coins, cmap=plt.cm.gray)
for l in range(n_clusters):
plt.contour(label == l,
colors=[plt.cm.nipy_spectral(l / float(n_clusters)), ])
plt.xticks(())
plt.yticks(())
plt.show()

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

کتابخانه Pendulum

کمی از ماشین لرنینگ و کتابخانه های آن فاصله بگیریم. Penulum یک کتابخانه ی کار با زمان و تاریخ است. با این کتابخانه قادر خواهید بود با استفاده از ناحیه ی زمانی، زمان و تاریخ را تحویل کاربر دهید تمام کار های مرتبط به تاریخ، روزها، هفته ها و زمان که می خواهید در یک زبان برنامه نویسی انجام دهید پندلوم(Pendulum) آنها را به پایتون آورده است.

کتابخانه Selnium

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

 

 

کتابخانه Pillow

پیلو (Pillow) یکی از بهترین کتابخانه های زبان برنامه نویسی پایتون است. که برای پردازش تصویر (بخشی از علم کامپیوتر است که به دو بخش عمده ی بینایی ماشین و بهبود تصاویر اشاره دارد.

به زبان ساده پردازش تصویر یعنی انجام برخی عملیات با استفاده از الگوریتم ها روی تصاویر دیجیتال) و هرگونه کار با تصویر مورد استفاده قرار می گیرد. کاربردهای پیلو در زبان برنامه نویسی پایتون شامل ذخیره تصویر، تغییر اندازه تصویر، بریدن تصویر، چرخش تصویر، خواندن و نمایش تصویر، بهبود تصویر، گذاشتن فیلتر روی تصویر (از فیلتر های مهم بلور، نقاشی شده، تیز، صاف و پیدا کردن لبه است) و … می شود.

در زیر مثالی از کدهای پیلو در زبان برنامه نویسی پایتون داده شده است (برای درک کاربرد های این کتابخانه لازم است چند مثالی همراه با کد نویسی زده شود لطفا مثال ها را تمرین کنید و خروجی بگیرید):

 

 

خواندن و نمایش تصویر:در اولین خط کد از کتابخانه ی پیلو برای عملیات روی عکس استفاده کردیم در خط دوم یک عکس را با نام beautiful باز کردیم و آن را انتقال دادیم به درون image تا برای باقی عملیات آماده باشد و در خط سوم آن عکس را نمایش دادیم

 

from PIL import Image image = Image.open("sample.jpg") image.show() 123 from PIL import Imageimage = Image.open("sample.jpg")image.show()

 

ذخیره تصویر

در پایتون برای اینکه تغییرات اعمال شود باید آنها را ذخیره کنیم در زیر با استفاده از تابع save عکس را ذخیره کرده ایم

 

image.save("sample.png") 1 image.save("sample.png")

 

تغییر اندازه

در خط اول کد عکس را به ابعاد 200 در 200 تغییر اندازه می دهیم و در resized_img قرار می دهیم و بعد آن را ذخیره می کنیم.

 

image = image.resize((200,200)) image.save(“sample.jpg”) 12 image = image.resize((200,200))image.save(“sample.jpg”)

 

فیلتر عکس

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

 

from PIL import ImageFilter image = Image.filter(ImageFilter.BLUR) image.save("sample.jpg") 123 from PIL import ImageFilterimage = Image.filter(ImageFilter.BLUR)image.save("sample.jpg")

 

کتابخانه PyMongo

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

 

 

کتابخانه  PyGame

تا اینجا از بسیاری از کتابخانه ها در پایتون و کاربرد آنها سخن گفتیم اما حالا نوبت می رسد به یکی از کتابخانه های بازی سازی در پایتون، بیشتر کتابخانه های پایتون مربوط می شود به بحث های ماشین لرنینگ، علم داده، داده کاوی و مسائلی از این قبیل اما در هر زبان برنامه نویسی مسلما ما به موتور های بازی سازی و کتابخانه های غنی نیازمندیم PyGame یکی از همین کتابخانه ها است.

 

PyGame به عنوان یک موتور بازی سازی پایتون شناخته می شود که تولید کنندگان بازی های ویدیویی از آن جهت ساخت بازی در پایتون استفاده می کنند. این موتور بازی سازی متن باز است همچون بسیاری دیگر از کتابخانه های پایتون (این ویژگی در دنیای نرم افزار بسیار ارزشمند است) یکی از کاربردهای مهم PyGame رندر کردن سورس کد است که در این کتابخانه این کار بسیار راحت شده است.

 

 

از دیگر کاربردها مدیریت اسپریت ها و کنترل رویدادهای ورودی است. همچنین لازم به گفتن است که با PyGame می توان برای سیستم عامل های مختلفی از جمله آندروید بازی ساخت.

کتابخانه PyWin32

پایتون زبانی همه منظوره است. شما می توانید با آن انواع اپلیکیشن برای سیستم عامل های مختلف بنویسید. یکی از این سیستم عامل های مهم ویندوز است راه اول این است که با استفاده از زبان های برنامه نویسی مثل سی شارپ که مایکروسافت آن را ساخته برای ویندوز برنامه بسازید.

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

پایتون کتابخانه های زیادی برای ویندوز دارد PyWin32 یکی از آنهاست اگر می خواهید که برنامه های سیستمی بنویسید و با سطوح پایین ویندوز ارتباط داشته باشید PyWin32 در این کار به شما کمک می کند با استفاده از این کتابخانه به راحتی می توانید که سخت افزار را مدیریت کنید.