Table of Contents
مقدمهای بر استفاده از کتابخانهها در پایتون
در فصلهای قبل یاد گرفتید که چطور با خودِ زبان پایتون برنامههای ساده بنویسید: متغیر، شرط، حلقه، توابع و …
اما قدرت واقعی پایتون وقتی دیده میشود که از «کتابخانهها» کمک بگیرید.
کتابخانهها (Libraries) مجموعهای از کدهای آماده هستند که افراد دیگر نوشتهاند تا شما مجبور نباشید همهچیز را از صفر بسازید. این فصل یک نقشهٔ راه کلی برای کار با کتابخانهها به شما میدهد؛ جزئیات فنی هر بخش در زیربخشهای همین فصل (مثل math، random، datetime و pip) توضیح داده میشود.
در این فصل روی این موارد تمرکز میکنیم:
- چرا از کتابخانهها استفاده میکنیم؟
- چطور آنها را کشف و انتخاب کنیم؟
- روشهای مختلف وارد کردن (
import) و الگوهای رایج استفاده - تفاوت کتابخانههای استاندارد و کتابخانههای خارجی
- نکات مهم برای تازهکارها هنگام کار با کتابخانهها
زیربخشهای بعدی این فصل بهطور خاص به:
- مفهوم «کتابخانه» و «ماژول»
- روشهای
import - مثال با کتابخانههای استاندارد (
math,random,datetime) - نصب کتابخانههای خارجی با
pip
میپردازند؛ در این متن روی تصویر کلی و مهارتهای عمومی استفاده از کتابخانهها تمرکز میکنیم.
چرا کتابخانهها مهم هستند؟
بدون کتابخانهها، برای هر کار کوچکی باید خودتان الگوریتم طراحی کنید، تست کنید و اشکالزدایی کنید. کتابخانهها:
- زمان شما را ذخیره میکنند
بهجای نوشتن یک تابع پیچیده برای محاسبهٔ میانگین، کار با تاریخ، رسم نمودار و …، از توابع آماده استفاده میکنید. - کد شما را قابل اعتمادتر میکنند
بسیاری از کتابخانهها سالها توسط افراد زیادی استفاده و تست شدهاند. احتمال خطای آنها از کدی که همین الان سریع مینویسید کمتر است. - دسترسی به قابلیتهای حرفهای میدهند
مثلاً: - علم داده:
numpy,pandas - وب:
flask,django - خودکارسازی:
os,shutil,pathlib,selenium - کار با تصویر:
Pillow,opencv-python
شما میتوانید در مدت کوتاه، کارهایی انجام دهید که بدون کتابخانه تقریباً غیرممکن یا خیلی سخت است.
کتابخانه، ماژول، پکیج: تصویر کلی
تفاوت دقیق این اصطلاحات در زیربخش «کتابخانه چیست؟» آمده است؛ اینجا فقط یک درک شهودی میسازیم:
- ماژول (module) معمولاً یک فایل پایتون است، مثلاً:
math.py(در عمل فایل واقعی معمولاً کمی متفاوت است، اما برای درک اولیه این تصور کافی است). - پکیج (package) مجموعهای از ماژولهاست که کنار هم یک قابلیت بزرگتر را فراهم میکنند.
- کتابخانه (library) اصطلاح کلیتری است که میتواند شامل یک ماژول یا یک پکیج یا مجموعهای از آنها باشد.
در عمل، وقتی میگوییم "کتابخانهٔ math" یا "کتابخانهٔ random"، منظورمان همان ماژول/پکیجهایی است که با import آنها را استفاده میکنیم.
کتابخانههای استاندارد در برابر کتابخانههای خارجی
کتابخانهها را از دو منظر مهم میتوان دستهبندی کرد:
کتابخانههای استاندارد (Standard Library)
- همراه با نصب پایتون روی سیستم شما قرار میگیرند.
- لازم نیست چیزی نصب کنید؛ فقط کافی است آنها را
importکنید. - پوششدهندهٔ کارهای عمومی و پرکاربرد هستند، مثل:
- محاسبات ریاضی:
math - تولید اعداد تصادفی:
random - کار با تاریخ و زمان:
datetime - کار با فایلها و مسیرها:
os,pathlib - فشردهسازی فایلها:
zipfile - و دهها ماژول دیگر…
مثال ابتدایی:
import math
print(math.sqrt(16)) # ریشهٔ دوم
print(math.pi) # عدد پیاستفاده از کتابخانههای استاندارد قدم اول و امن برای عادت کردن به کار با کتابخانههاست.
کتابخانههای خارجی (Third-Party Libraries)
- بهصورت پیشفرض همراه پایتون نصب نمیشوند.
- برای نصب آنها معمولاً از ابزار
pipاستفاده میشود (در زیربخش مربوطه توضیح داده میشود). - توسط جامعهٔ کاربری پایتون یا شرکتها توسعه داده میشوند.
- اغلب برای حوزههای تخصصی استفاده میشوند، مثل:
numpy,pandasبرای علم دادهflask,djangoبرای وبrequestsبرای کار با HTTP و APImatplotlib,seabornبرای مصورسازی
الگوهای رایج استفاده از `import`
در زیربخش «وارد کردن ماژولها» نحو دقیق (syntax) را تمرین میکنید؛ اینجا میخواهیم با الگوهای فکری استفاده از آنها آشنا شوید.
چند شکل بسیار رایج:
- وارد کردن کامل ماژول
import math
result = math.sqrt(25)- خوانایی بالا دارد (
math.sqrtمشخص است از کجا آمده). - برای شروع، امنترین و توصیهشدهترین روش است.
- وارد کردن با نام مستعار (alias)
import datetime as dt
today = dt.date.today()- وقتی نام کتابخانه طولانی است یا زیاد از آن استفاده میکنید، کوتاهتر کردن نام مفید است.
- باید نام مستعار را طوری انتخاب کنید که برای شما و خوانندهٔ کد واضح باشد.
- وارد کردن فقط بخشهای موردنیاز
from math import sqrt, pi
print(sqrt(9))
print(pi)- نیاز نیست هر بار
math.بنویسید. - اما گاهی خوانایی را کم میکند (مشخص نیست تابع
sqrtاز کدام ماژول آمده است، مگر با نگاه به بالای فایل).
- (برای شروع توصیه نمیشود) وارد کردن همهچیز با
*
from math import *- این کار بسیاری از نامها را مستقیماً وارد فضای نام (namespace) شما میکند.
- برای افراد تازهکار میتواند باعث سردرگمی شود؛ اگر دو ماژول تابع همنام داشته باشند، معلوم نیست کدام استفاده شده است.
- برای همین، تا زمانی که تجربه بیشتری پیدا نکردهاید، از این روش پرهیز کنید.
چطور کتابخانهٔ مناسب را پیدا کنیم؟
با بزرگتر شدن برنامهها، معمولاً به مشکلی برمیخورید که حس میکنید «حتماً یکی قبلاً این را حل کرده». راه معمول:
- بهصورت واضح مشکل خود را بنویسید
مثلاً: - «میخواهم فایلهای یک پوشه را جابهجا کنم»
- «میخواهم نمودار خطی از دادههایم بکشم»
- «میخواهم یک صفحهٔ وب باز کنم و اطلاعاتی از آن بخوانم»
- جستوجو با ترکیب "python" + مسئله
مثالها: python move files directorypython draw line chartpython download web page- بررسی پیشنهادها
در نتایج، معمولاً نام کتابخانهها تکرار میشود. برای مثال: - برای نمودار:
matplotlib - برای کار با وب:
requests,beautifulsoup4 - برای کار با فایلها: اغلب
os,shutil,pathlibاز کتابخانهٔ استاندارد - چند معیار ساده برای انتخاب
- آیا این کتابخانه در مستندات رسمی یا آموزشهای معتبر پیشنهاد شده است؟
- آیا تعداد نصب (Downloads/Installs) زیادی دارد؟
- آیا آخرین بهروزرسانی آن نسبتاً جدید است؟
هدف شما در این دوره این نیست که همهٔ کتابخانهها را بشناسید، بلکه یاد بگیرید چطور خودتان کتابخانهٔ مناسب را پیدا و استفاده کنید.
خواندن مستندات (Documentation) کتابخانهها
تقریباً همهٔ کتابخانههای جدی، یک مستندات (Documentation) دارند. مهارت کار با مستندات، یکی از مهمترین مهارتهای یک برنامهنویس است.
برای شروع، به چند بخش کلیدی در مستندات توجه کنید:
- Quickstart / Getting Started
معمولاً چند مثال کوتاه دارد که نشان میدهد چطور کتابخانه راimportو از آن استفاده کنید. - Examples / Tutorials
مثالهای بیشتری که بر اساس آنها میتوانید نیاز خود را تنظیم کنید. - API Reference
فهرستی از توابع، کلاسها و متدها. در ابتدای کار شاید کمی خشک به نظر برسد، اما وقتی دقیقاً دنبال یک تابع هستید خیلی کمک میکند.
در سطح مبتدی، بهترین کار این است که:
- مستندات را فقط مرور کنید تا ساختار کلی و مثالها را ببینید.
- سپس مثالها را کپی کرده، اجرا کنید و کمکم آنها را تغییر دهید.
الگوی ذهنی استفاده از کتابخانهها
وقتی میخواهید با کتابخانهای کار کنید، یک روند کلی مفید این است:
- کار را به دو بخش تقسیم کنید
- بخش اول: استفاده از امکانات آماده کتابخانه
- بخش دوم: ترکیب این امکانات با منطق خودتان (حلقه، شرط، توابع و … که قبلاً یاد گرفتهاید)
- یک نمونهٔ خیلی کوچک بسازید
- فقط
importکنید - یک یا دو تابع را صدا بزنید
- ببینید خروجی چگونه است
- بهتدریج آن را در برنامهٔ اصلی خودتان ادغام کنید
- اول فقط یک کار کوچک را با کتابخانه انجام دهید،
- اگر جواب داد، آن را گسترش دهید.
- اشتباه کردن و خواندن خطاها کاملاً طبیعی است
- خیلی از خطاها در شروع، صرفاً به این خاطر است که نام تابع را اشتباه نوشتهاید، یا نوع دادهٔ نادرست به آن دادهاید.
- به خطای پایتون نگاه کنید: معمولاً نام ماژول و تابع را در متن خطا میبینید.
بهترین تمرینها برای مبتدیان هنگام کار با کتابخانهها
- ساده شروع کنید
بهجای اینکه همزمان چند کتابخانهٔ مختلف را وارد یک پروژهٔ بزرگ کنید، با یک کتابخانهٔ کوچک شروع کنید. - از
importهای شفاف استفاده کنید
تا جای ممکن ازimport mathوimport randomاستفاده کنید.
وارد کردن با*(ستاره) را به بعد موکول کنید. - نامهای مستعار قابلفهم انتخاب کنید
مثلاً:
import numpy as np
import pandas as pd
در این دو مورد، np و pd بهصورت قراردادی در جامعهٔ پایتون رایجاند؛ بنابراین خوانندگان کد بهراحتی متوجه میشوند.
- نسخهٔ پایتون و کتابخانه را در نظر بگیرید
بعضی توابع ممکن است در نسخههای قدیمی/جدید موجود یا حذف شده باشند. اگر مثالی یافتید که برای شما خطا میدهد، نسخهٔ پایتون و نسخهٔ کتابخانه را بررسی کنید. - از محیط مجازی (virtual environment)
در پروژههای جدیتر استفاده میشود تا نسخهٔ کتابخانهها جدا از هم مدیریت شوند. این موضوع برای این دوره ضروری نیست، اما بعداً بسیار مفید خواهد بود.
تمرینهای پیشنهادی مفهومی (بدون کدنویسی زیاد)
برای اینکه حس بهتری از نقش کتابخانهها بگیرید، میتوانید به این سؤالات فکر کنید (یا بعداً روی آنها کد بنویسید):
- اگر کتابخانهٔ
randomنداشتید، چطور میخواستید عدد تصادفی تولید کنید؟ - اگر کتابخانهٔ
datetimeنبود، چگونه تاریخ امروز را بهدست میآوردید یا اختلاف دو تاریخ را محاسبه میکردید؟ - با جستوجو در اینترنت، یک کتابخانهٔ پایتون برای کار با PDF پیدا کنید.
- نام آن چیست؟
- برای چه کارهایی بهدرد میخورد؟
- یک مثال کوتاه از مستنداتش ببینید.
در زیربخشهای بعدی همین فصل، با چند کتابخانهٔ استاندارد (math, random, datetime) و همچنین با نصب کتابخانههای خارجی (pip) بهصورت عملی کار خواهید کرد و خواهید دید که همهٔ این مفاهیم چگونه در کد واقعی استفاده میشوند.