Table of Contents
مروری بر کتابخانهٔ استاندارد پایتون
در این بخش فرض میکنیم با مفهوم کلی «کتابخانه» و «وارد کردن ماژولها» آشنا شدهاید. اینجا تمرکز ما روی چیزی است که به آن کتابخانهٔ استاندارد پایتون میگویند: مجموعهای از ماژولها که همراه خود پایتون نصب میشوند و بدون نصب چیز اضافی میتوانید از آنها استفاده کنید.
در ادامه، ایدهٔ کلی کتابخانهٔ استاندارد را توضیح میدهیم و بعد، قبل از رفتن به زیربخشهای math، random و datetime، چند نمونهٔ مهم دیگر را خیلی کوتاه معرفی میکنیم تا تصویر کلیتری بگیرید.
کتابخانهٔ استاندارد یعنی چه؟
وقتی پایتون را نصب میکنید، فقط «هستهٔ زبان» را دریافت نمیکنید؛ بلکه یک مجموعهٔ بزرگ از ماژولها هم همراه آن میآید که به آنها کتابخانهٔ استاندارد (Standard Library) میگویند.
ویژگیهای مهم کتابخانهٔ استاندارد:
- همراه پایتون نصب است
لازم نیست برای استفاده از آنها چیزی باpipنصب کنید. - کیفیت و پایداری بالا
توسط خود تیم پایتون و جامعهٔ رسمی نگهداری میشود. - پوشش دادن کارهای متداول مثل:
- کار با زمان و تاریخ
- انجام محاسبات ریاضی
- کار با فایلها و پوشهها
- فشردهسازی (zip و …)
- شبکه (ارسال درخواستهای سادهٔ وب و …)
- قالببندی متن، کار با رشتهها، الگوهای متنی و …
ایدهٔ اصلی این است:
بهجای اینکه همهچیز را از صفر بنویسید، اول در کتابخانهٔ استاندارد بگردید؛ اغلب «چرخ قبلاً اختراع شده است» و فقط باید از آن استفاده کنید.
ساختار کلی استفاده از ماژولهای استاندارد
در اکثر مواقع، برای استفاده از یک ماژول استاندارد فقط کافی است آن را import کنید. چند الگوی رایج:
- وارد کردن کل ماژول:
import math
print(math.pi)- وارد کردن یک تابع یا کلاس مشخص:
from math import sqrt
print(sqrt(16))- وارد کردن با نام کوتاهتر (مخفف):
import datetime as dt
today = dt.date.today()
print(today)
در زیربخشهای بعدی این فصل، برای ماژولهای math، random و datetime نمونههای عملیتری خواهید دید؛ اینجا روی مرور کلی بقیهٔ بخشهای مهم کتابخانهٔ استاندارد تمرکز میکنیم.
دستهبندی کلی ماژولهای استاندارد
کتابخانهٔ استاندارد دهها ماژول دارد. لازم نیست همه را حفظ کنید؛ مهم این است بدانید چه نوع کارهایی را پوشش میدهد تا وقتی نیازی داشتید، بتوانید آن را پیدا کنید.
۱. کار با سیستمعامل و فایلها
این مجموعه کمک میکند با فایلها، پوشهها و محیط سیستمعامل کار کنید.
os
برای کار با سیستمعامل:- ساخت پوشه، حذف پوشه
- بهدستآوردن مسیر فعلی
- لیست کردن فایلهای داخل یک پوشه
نمونهٔ ساده:
import os
print(os.getcwd()) # مسیر فعلی
print(os.listdir(".")) # فایلهای پوشهٔ فعلیpathlib
روش «شیگرا»تر و جدیدتر برای کار با مسیرها:
from pathlib import Path
p = Path(".")
for item in p.iterdir():
print(item)shutil
برای کارهای سطح بالاتر روی فایلها:- کپی فایل
- جابهجا کردن فایل
- فشردهسازی پوشه
این ماژولها در فصل «خودکارسازی» و «کار با فایلها و پوشهها» کاربرد زیادی خواهند داشت.
۲. فشردهسازی و آرشیو
zipfile
ساخت و خواندن فایلهایzip.tarfile
برای فایلهایtar(بیشتر در لینوکس/یونیکس).
نمونهٔ خیلی سادهٔ ساخت فایل zip:
import zipfile
with zipfile.ZipFile("archive.zip", "w") as z:
z.write("file1.txt")
z.write("file2.txt")۳. کار با متن و رشتهها
پایتون در هستهٔ خود امکانات خوبی برای کار با رشتهها دارد، اما کتابخانهٔ استاندارد ابزارهای پیشرفتهتری هم ارائه میکند.
re
برای جستوجو و تطبیق الگوها در متن با «عبارات باقاعده» (Regular Expressions).
در این دوره وارد جزئیات کاملreنمیشویم، اما بدانید که برای جستوجوی پیچیده در متن از این ماژول استفاده میشود.
import re
text = "Email: user@example.com"
match = re.search(r"\w+@\w+\.\w+", text)
if match:
print("ایمیل پیدا شد:", match.group())textwrap
برای شکستن متنهای طولانی به چند خط منظم.string
شامل ثابتها و ابزارهای کمکی برای رشتهها، مثلstring.ascii_letters،string.digitsو … که برای تولید رمز عبور یا پردازش متن مفید است.
۴. ذخیرهسازی داده و ساختارهای سریالی
گاهی لازم است دادهها را در فایل ذخیره کنید، طوری که بعداً دوباره به شکل اصلی بازگردانده شوند.
json
برای خواندن/نوشتن دادهها در قالب JSON (فرمت بسیار رایج برای تبادل داده، مخصوصاً در وب و APIها).
import json
data = {"name": "Ali", "age": 20}
text = json.dumps(data) # تبدیل دیکشنری به رشتهٔ JSON
print(text)
back = json.loads(text) # تبدیل رشتهٔ JSON به دیکشنری
print(back["name"])pickle
برای ذخیرهٔ مستقیم اشیای پایتونی در فایل و بازیابی آنها.
(برای شروع، معمولاًjsonگزینهٔ امنتر و رایجتری است.)
۵. ابزارهای مربوط به زمانسنجی و کارایی
time
برای کار با زمانِ سیستم (تا حدودی سطح پایین).
میتوانید برای اندازهگیری مدت اجرای یک قطعه کد ازtime.time()استفاده کنید.timeit
برای اندازهگیری دقیقتر زمان اجرای بخشهای کوچک کد.
این ماژول بیشتر وقتی مهم میشود که روی «کارایی» (Performance) حساس باشید.
۶. ابزارهای مرتبط با شبکه و وب (مقدماتی)
حتی بدون کتابخانههای خارجی هم میتوانید کارهای سادهٔ وب انجام دهید.
urllib
برای ارسال درخواستهای سادهٔ HTTP (مثلاً دریافت محتوای یک صفحهٔ وب).
در توسعهٔ وب جدیتر معمولاً از کتابخانههای خارجی مثلrequestsاستفاده میشود، اماurllibپایهایترین ابزار استاندارد است.http
مجموعهای از ابزارها برای کار با پروتکل HTTP؛ برای شروع خیلی ضروری نیست، اما بدانید در کتابخانهٔ استاندارد وجود دارد.
اینها در فصلهای «توسعهٔ وب» و «API های بسیار ساده» کاربرد پیدا میکنند.
۷. ابزارهای کاربردی عمومی
این دسته از ماژولها در پروژههای مختلف، به شکلهای متنوعی استفاده میشوند.
collections
ساختارهای دادهٔ پیشرفتهتر مثل:Counterبرای شمردن تکرار عناصرdefaultdictبرای دیکشنری با مقدار پیشفرضdequeبرای صف (Queue) با کارایی بالا
from collections import Counter
nums = [1, 2, 2, 3, 3, 3]
c = Counter(nums)
print(c) # خروجی: Counter({3: 3, 2: 2, 1: 1})itertools
ابزارهایی برای ساخت و ترکیب حلقهها و توالیها.
در کار با دادهها و نوشتن کدهای فشرده و کارآمد بسیار مفید است.functools
ابزارهای مربوط به توابع، مثلlru_cacheبرای کشکردن نتایج یک تابع.
۸. ابزارهای اشکالزدایی و توسعه
logging
برای ثبت پیامها و وقایع (Log) در حین اجرای برنامه:- ثبت خطاها
- ثبت اتفاقات مهم
- ذخیره در فایل
این ماژول در برنامههای بزرگتر از print حرفهایتر است.
traceback
برای کار با اطلاعات خطاها (Stack Trace) در صورت بروز استثناها؛
در کنارtryوexceptکه در فصل «خطاها و اشکالزدایی» میآید به کار میآید.pdb
اشکالزدا (Debugger) تعاملی پایتون؛
میتوانید وسط اجرا برنامه را متوقف کرده و متغیرها را بررسی کنید.
چطور از کتابخانهٔ استاندارد بیشترین استفاده را ببریم؟
۱. پیش از نوشتن کد، جستوجو کنید
اگر میخواهید:
- کلمهها را بشمارید
- فایلها را جابهجا کنید
- با تاریخ کار کنید
- دادهها را فشرده کنید
احتمالاً یکی از ماژولهای استاندارد این کار را قبلاً انجام داده است.
۲. مستندات رسمی را مرور کنید
آدرس کلی مستندات کتابخانهٔ استاندارد:
- https://docs.python.org
(نسخهٔ پایتون خود را انتخاب کنید و به بخش Library Reference بروید.)
۳. با مثالهای کوچک آزمایش کنید
مثل کدی که در این فصل و زیربخشهای math، random و datetime میبینید:
- چند خط بنویسید
- در حالت تعاملی پایتون (
REPL) یا اسکریپت اجرا کنید - رفتار توابع را مرحلهبهمرحله امتحان کنید
۴. آرامآرام، نه همهچیز یکجا
لازم نیست همهٔ ماژولها را یکجا یاد بگیرید.
بهمرور و همزمان با پروژهها و تمرینهایتان با آنها آشنا میشوید.
چند تمرین پیشنهادی برای کار با کتابخانهٔ استاندارد
برای تمرین، میتوانید چند پروژهٔ خیلی کوچک با تکههایی از کتابخانهٔ استاندارد بسازید:
- گذار زمان ساده
با استفاده از ماژولهای زمانی (مثلtimeیاdatetime) برنامهای بنویسید که: - زمان شروع را ذخیره کند
- بعد از گرفتن یک ورودی از کاربر، مدت زمانی را که گذشته است چاپ کند
- شمارش کلمات در یک متن
برنامهای بنویسید که: - یک رشته (متن) بگیرد
- با استفاده از
collections.Counterتعداد هر کلمه را بشمارد - ذخیره و بازیابی تنظیمات با JSON
برنامهای کوچک بسازید که: - یک دیکشنری تنظیمات بسازد (مثلاً
{"theme": "dark", "font_size": 14}) - آن را با
jsonدر فایلی ذخیره کند - در اجرای بعدی، آن فایل را بخواند و تنظیمات را بازیابی کند
در زیربخشهای بعدی این فصل، بهطور مشخص با سه ماژول math، random و datetime کار خواهیم کرد که از رایجترین و پرکاربردترین قسمتهای کتابخانهٔ استاندارد برای مبتدیان هستند.