این سخنرانی پیرامون ماژولها و بستههای موجود در پایتون خواهد بود.
آنها راهی برای سازماندهی کد شما در قالب فایل هستند و اگر قصد دارید برنامه های تحت وب با پایتون بسازید بسیار مهم هستند.
ماژول ها
یک ماژول در پایتون اساساً یک فایل با مقداری کد پایتون است که ما از آن برای سازماندهی کد خود در فایلها استفاده میکنیم. به آن مانند بخش هایی در سوپرمارکت فکر کنید. وقتی به یک سوپرمارکت می روید، بخش های مختلفی برای میوه ها، سبزیجات، محصولات پاک کننده و غیره وجود دارد. شما یک بخش را با همه محصولات نمی بینید.
در برنامه نویسی هم همین مفهوم است. به جای اینکه همه کدهای خود را با تمام توابع و کلاس ها در main.py بنویسیم، کد خود را به چندین فایل تقسیم می کنیم. هر فایل به عنوان یک ماژول نامیده می شود. با این کار، نه تنها کد ما سازماندهی و ساختار بهتری دارد، بلکه توانایی استفاده مجدد از کد خود را نیز داریم. بیایید آن را از طریق یک مثال ببینیم.
بیایید دو تابع برای تبدیل وزن از پوند به کیلوگرم و بالعکس تعریف کنیم.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
اکنون میتوانیم این دو تابع را برداریم و در یک ماژول جداگانه به نام «مبدل» قرار دهیم و سپس آن را به هر برنامهای که به این توابع مبدل نیاز دارد وارد کنیم. اجازه دهید به شما نشان دهم که چگونه این کار را انجام دهید.
بیایید پانل پروژه خود را باز کنیم و روی پروژه کلیک راست کرده و یک فایل جدید اضافه کنیم. ما این فایل را "Converters.py" می نامیم.
اکنون کد را از فایل پیش فرض کپی کرده و در "Converters.py" قرار دهید.
با این ماژول اصلی خود را تمیز کرده ایم و با عملکردهای مختلف پف نمی کند. همانطور که توابع بیشتری را با کلاس ها می نویسیم، آنها را در ماژول های مربوطه قرار می دهیم. یک ماژول باید شامل تمام توابع و کلاس های مرتبط باشد. اکنون می خواهیم ماژول مبدل ها را به ماژول برنامه خود وارد کنیم. برای این کار بنویسید import converters
در بالا بدون پسوند ".py".
ما می توانیم با استفاده از عملگر نقطه ای مشابه روش ها به اعضای یک ماژول دسترسی پیدا کنیم.
بیایید 70 کیلوگرم را به پوند تبدیل کنیم:
همچنین دستور دیگری برای وارد کردن ماژول ها وجود دارد. به جای وارد کردن کل ماژول، می توانیم توابع خاصی را از آن ماژول وارد کنیم. میتونیم تایپ کنیم from Converters import
و برای نمایش لیست توابع موجود، "control + space" را فشار دهید. با این کار می توانیم مستقیماً این تابع را فراخوانی کنیم.
ورزش
تمرین شما اینجاست.
این مربوط به تمرینی از سخنرانی است که در آن بحث کردیم "برای حلقه ها” جایی که ما برنامه ای نوشتیم تا بیشترین تعداد را از یک لیست پیدا کنیم
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
این کد در حال حاضر هیچ سازمانی ندارد. ما هیچ توابع یا ماژول نداریم و برنامه در یک فایل نوشته شده است. این برای برنامه های کوچک خوب است، اما با رشد برنامه های شما، باید کد خود را به درستی در کلاس ها و ماژول ها سازماندهی کنید. بنابراین، به عنوان بخشی از این تمرین، از شما می خواهم یک تابع بنویسید، آن را فراخوانی کنید find_max
. این تابع باید یک لیست بگیرد و بیشترین عدد را در آن لیست برگرداند. پس از آن ادامه دهید و این تابع را در یک ماژول جداگانه قرار دهید، آن را از اینجا استخراج کنید و در یک ماژول به نام قرار دهید utils
. این ماژول باید شامل مجموعه ای از توابع کاربردی باشد. وارد کنید utils
ماژول وارد ماژول فعلی شده و تماس بگیرید find_max
عملکرد. در نهایت نتیجه را بگیرید و روی ترمینال چاپ کنید.
این تمرین کمی چالش برانگیز است اما به راحتی قابل انجام است.
راه حل
با تعریف یک تابع شروع کنید find_max
و پارامتری به نام اعداد اضافه کنید. در داخل این تابع، الگوریتم یافتن بزرگترین عدد در یک لیست را بنویسید.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
این کد را در فایل "utils.py" به عنوان یک ماژول ذخیره کنید.
به برنامه اصلی خود برگردید، فقط ماژول را با هر یک از دو نحو وارد کنید و به سادگی منطق را اجرا کنید.
یک چیز، من باید توجه شما را به آن جلب کنم، تضعیف شده است max
. دلیل آن است max
یک تابع داخلی در پایتون است و ما در حال تعریف مجدد آن هستیم. بنابراین این یک هشدار از طرف است کامپایلر پایتون که دیگر نمی توانیم از max به عنوان تابع داخلی آن استفاده کنیم.
ماژول های داخلی در پایتون
پایتون دارای یک کتابخانه استاندارد است که شامل چندین ماژول برای کارهای رایج مانند ارسال ایمیل، کار با تاریخ و زمان، تولید مقادیر تصادفی و رمز عبور و غیره است. ماژولهای زیادی قبلاً در پایتون ساخته شدهاند که به این معنی است که در حال حاضر عملکردهای زیادی وجود دارد که میتوانیم دوباره از آنها استفاده کنیم. شما می توانید این ماژول ها را پیدا کنید اینجا کلیک نمایید.
بسته
بسته ها اساساً راه دیگری برای سازماندهی کد ما در بالای ماژول ها هستند. یک پروژه واقعی میتواند شامل صدها یا حتی هزاران ماژول باشد و به مرور زمان فهرست ما با فایلهای زیادی پر میشود. بنابراین، یک رویکرد بهتر، سازماندهی ماژول های مرتبط در داخل یک بسته است که بسته را به یک ظرف برای چندین ماژول تبدیل می کند.
یک دایرکتوری جدید به پروژه اضافه می شود و تمام ماژول های مرتبط به آن دایرکتوری اضافه می شوند. به عنوان مثال، به یک مرکز خرید فکر کنید. در یک مرکز خرید بخش های مختلفی برای پوشاک مردانه، زنانه و بچه گانه وجود دارد که مانند بسته بندی هستند. هر بخش دارای قسمت های مختلفی برای انواع مختلف محصولات مانند کفش، تی شرت و ژاکت است. به اینها به عنوان ماژول فکر کنید.
بیایید نحوه ایجاد و استفاده از بسته ها در پایتون را ببینیم.
ابتدا یک دایرکتوری جدید از پنل پروژه اضافه کنید. بیایید آن را "تجارت الکترونیک" بنامیم. این بسته شامل تمام ماژول های مربوط به یک برنامه تجارت الکترونیک است.
این هنوز یک دایرکتوری خالی است و برای تبدیل آن به یک بسته، باید یک فایل خاص در آن ایجاد کنیم. یک فایل پایتون جدید در این دایرکتوری اضافه کنید و نام آن را "__init__" بگذارید. این یک قرارداد خاص در پایتون است و هنگامی که مفسر پایتون فایلی با این نام را در دایرکتوری می بیند، با این دایرکتوری به عنوان یک بسته برخورد می کند.
ما همچنین یک روش جایگزین و مختصر برای ایجاد یک بسته داریم. فقط روی پنل پروژه کلیک راست کرده و یک بسته پایتون از لیست ایجاد کنید. نام آن را "تجارت الکترونیک" بگذارید و تمام. به طور خودکار یک دایرکتوری با یک فایل پایتون به نام "__init__" ایجاد می کند.
حالا بیایید یک ماژول در بسته ایجاد کنیم و نام آن را حمل و نقل بگذاریم. در این ماژول، اجازه دهید یک تابع ساده برای محاسبه هزینه حمل و نقل ایجاد کنیم.
def calc_shipping():
print("calc_shipping")
برای دسترسی به این تابع در ماژول اصلی، باید از طریق بسته تجارت الکترونیکی به آن دسترسی داشته باشیم. بار دیگر ما دو روش برای وارد کردن این ماژول داریم.
در روش اول، ما می توانیم کل ماژول را وارد کنیم و سپس یک تابع را به صورت مستقل فراخوانی کنیم:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
با این حال، با این رویکرد، فراخوانی یکی از توابع به این ماژول نیاز به پیشوند آن دارد eCommerce.shipping.
که خیلی پرمخاطب است. بنابراین، هنگام کار با بسته ها، ما اغلب از رویکرد دوم استفاده می کنیم و از آن استفاده می کنیم from
بیانیه.
from eCommerce.shipping import calc_shipping
calc_shipping()
اگر چندین عملکرد در یک ماژول دارید، می توانید همه آنها را در یک خط با استفاده از کاما بین آنها وارد کنید. فرض کنید عملکرد دیگری برای محاسبه مالیات در ماژول حمل و نقل ما وجود دارد. که به این صورت وارد می شود:
from eCommerce.shipping import calc_shipping, calc_tax
همچنین میتوانید ماژولهای جداگانه را وارد کنید و توابع را بگذارید تا در مرحله بعد در برنامه فراخوانی شوند. بیایید حمل و نقل ماژول را وارد کنیم و سپس از یک عملگر نقطه برای فراخوانی تابع استفاده کنیم calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
بسته شدن!
بسته ها و ماژول ها در پایتون بسیار مهم هستند. مخصوصاً وقتی می خواهید با چارچوبی مانند جنگو که برای ساختن استفاده می شود کار کنید برنامه های وب با پایتون ما جنگو را در یک دوره دیگر پایتون بررسی خواهیم کرد.
این آخرین سخنرانی متعارف در این مجموعه بود. سخنرانی بعدی از قالب معمول ما منحرف خواهد شد و ما چند مورد مهم استفاده در پایتون را یاد خواهیم گرفت. این نشان دهنده پایان این سری خواهد بود و ما به سری بعدی پایتون خود خواهیم رفت. منتظر آن باشید.
پاسخ دهید