آموزش ساخت و استفاده از ماژول در پایتون 3
در این مقاله میخوانید
ماژولهای پایتون فایلهای .py هستند که از کد پایتون تشکیل میشوند. برخی از این ماژولها در کتابخانه استاندارد پایتون دردسترس قرار دارند؛ بههمیندلیل، با نصب پایتون این ماژولها نیز نصب میشوند.
درمورد دیگر ماژولهایی که با نصب پایتون دردسترس قرار نمیگیرند، میتوانید با pip مدیریت بسته پایتون، آن ها را نصب کنید. در این مطلب، قصد داریم نحوه ساخت ماژول در پایتون 3 را به شما آموزش دهیم.
ساخت ماژول در پایتون 3
برای ساخت ماژول در پایتون 3، به پیشنیازهایی نیاز خواهید داشت. برخی از آنها عبارتاند از:
پیشنیازها
در ابتدا، باید پایتون 3 را نصب و محیط برنامهنویسی را روی کامپیوتر یا سرور خود تنظیم کنید. حتماً به این نکته توجه کنید که محیط برنامهنویسی باید مطابق با سیستمعامل شما تنظیم شود؛ وگرنه به مشکل برمیخورید.
اوبونتو Debian و CentOS ازجمله سیستمعاملهای پرکاربردی بهشمار میآیند که میتوانید از آنها استفاده کنید؛ اما حتماً تنظیمات محیط برنامهنویسی روی سرور خود را مطابق با سیستمعامل استفادهشده تنظیم کنید.
برای اینکه بدانید چطور اولین برنامه خود را در پایتون ۳ بنویسید و اجرا کنید، مقالهی زیر را بخوانید.
نوشتن و واردکردن ماژولها
ایجاد ماژول مانند ساخت هر فایل پایتون دیگری است. ماژولها میتوانند شامل تعاریف توابع و کلاسها و متغیرهایی باشند که در دیگر برنامههای پایتون استفاده میشوند.
ابتدا باید در محیط برنامهنویسی، فایل hello.py را ایجاد و سپس آن را به فایل دیگری وارد کنید. برای شروع، تابعی ایجاد میکنیم که Hello, World! را چاپ خواهد کرد:
# Define a function def world(): print("Hello, World!")
اگر برنامه را در خط فرمان با python hello.py اجرا کنیم، هیچ اتفاقی نخواهد افتاد؛ زیرا به برنامه دستوری ندادیم که کاری انجام دهد.
حالا فایل دومی در همان Directory به نام main_program.py ایجاد میکنیم. با انجام این کار، ماژول ایجادشده را میتوانید وارد و تابع را فراخوانی کنید. توجه کنید که این فایل باید در همان دایرکتوری باشد؛ درغیراینصورت، پایتون نمیداند که ماژول را در کجا پیدا کند:
# Import hello module import hello # Call function hello.world()
ماژول را میتوانیم بهعنوان from hello import world وارد و بهصورت مستقیم بهعنوان ()world فراخوانی کنیم. حالا میتوانیم برنامه را در خط فرمان اجرا کنیم:
python main_program.py
زمانی که این کار را انجام دادیم، خروجی زیر را دریافت خواهیم کرد:
Output Hello, World!
برای اینکه نحوه استفاده از متغیرها در یک ماژول را بدانیم، میتوانیم یک تعریف متغیر را در فایل hello.py اضافه کنیم:
# Define a function def world(): print("Hello, World!") # Define a variable shark = "Sammy"
در مرحله بعد، متغیر را در تابع ()print فایل main_program.py فراخوانی میکنیم:
# Import hello module import hello # Call function hello.world() # Print variable print(hello.shark)
سپس و زمانی که مجدد برنامه را اجرا کنیم، خروجی زیر را دریافت خواهیم کرد:
Output Hello, World! Sammy
درنهایت نیز، یک کلاس در فایل hello.py ایجاد میکنیم. در اینجا، کلاس Octopus را با ویژگیهای name و color ایجاد میکنیم که در زمان فراخوانی ویژگیها را چاپ میکند:
# Define a function def world(): print("Hello, World!") # Define a variable shark = "Sammy" # Define a class class Octopus: def __init__(self, name, color): self.color = color self.name = name def tell_me_about_the_octopus(self): print("This octopus is " + self.color + ".") print(self.name + " is the octopus's name.")
در این مرحله، کلاس را به انتهای فایل main_program.py خود اضافه میکنیم:
# Import hello module import hello # Call function hello.world() # Print variable print(hello.shark) # Call class jesse = hello.Octopus("Jesse", "orange") jesse.tell_me_about_the_octopus()
در زمانی که کلاس Octopus را ازطریق ()hello.Octopus فراخوانی کردیم، میتوانیم به توابع و ویژگیهای کلاس در main_program.py دسترسی پیدا کنیم. همین مسئله به ما امکان میدهد که ()jesse.tell_me_about_the_octopus را بدون فراخوانی hello بنویسیم.
هاست پایتون دقیقاْ چیست و چرا باید هاست مناسب پایتون تهیه کنیم؟
وقتی برنامه را اجرا کنیم، خروجی زیر را دریافت خواهیم کرد:
Output Hello, World! Sammy This octopus is orange. Jesse is the octopus's name.
جالب است بدانید که ماژولها میتوانند کد را هم پیادهسازی کنند. برای انجام این کار، ابتدا باید فایل hello.py خود را بازنویسی کنیم تا تابع ()world را پیادهسازی کند:
# Define a function def world(): print("Hello, World!") # Call function within module world()
باقی تعاریف موجود در فایل را حذف کردیم. در این مرحله، در فایل main_program.py خود تمام خطها بهغیر از عبارت import را حذف خواهیم کرد:
# Import hello module import hello
زمانی که main_program.py را اجرا کنیم، خروجی زیر را دریافت خواهیم کرد:
Output Hello, World!
این مسئله بدیندلیل است که ماژول hello تابع ()world را اجرا میکند و سپس به main_program.py ارسال میشود. توجه کنید که این ماژول زمانی که main_program.py اجرا شود، اجرا خواهد شد.
ماژول یک فایل برنامه پایتون است و متشکل از تعاریف یا کدهایی خواهد بود و شما میتوانید از آن در سایر برنامههای پایتون نیز استفاده کنید.
آموزش کامل نصب و فعالسازی پایتون ۳٫۸ در centos 7.8 را در مقالهی زیر بخوانید.
دسترسی به ماژولها از دایرکتوری دیگر
اگر قصد دارید از ماژول پایتون در مکانی غیر از همان دایرکتوری استفاده کنید که برنامه اصلیتان در آن است، چند گزینه پیش رو دارید.
1. افزودن مسیرها
یکی از گزینههایی که پیش رو دارید، استفاده از فایلهای برنامهنویسی است که از آن ماژول مدنظر استفاده میکنند. البته این روش باید بهعنوان روشی موقت بهکار گرفته شود و بهدلیل کاملنبودن دسترسی ماژول در سراسر سیستم، روش دائمی نخواهد بود.
برای انجام این کار، ابتدا ماژول sys را درکنار ماژولهایی وارد کنید که میخواهید در فایل برنامه اصلی خود از آنها استفاده کنید. ماژول sys بهعنوان بخشی از کتابخانه استاندارد پایتون شناخته میشود و پارامترها و توابع خاص سیستم را ارائه میدهد.
برای مثال، فرض کنید که فایل hello.py را انتقال دادیم و اکنون در مسیر /usr/sammy/ قرار دارد. این در حالی است که فایل main_program.py در دایرکتوری دیگری است.
در فایل main_program.py، ماژول hello را با واردکردن ماژول sys و سپس ضمیمهکردن /usr/sammy/ به مسیری وارد میکنیم که پایتون برای فایلها بررسی میکند:
import sys sys.path.append('/usr/sammy/') import hello ...
تا زمانی که مسیر فایل hello.py را بهدرستی تنظیم کرده باشیم، فایل main_program.py را بدون هیچ مشکلی اجرا خواهیم کرد. درواقع، اگر تمام کارها بهخوبی پیش رفت، همان خروجی بالا را دریافت خواهیم کرد.
2. افزودن ماژول به مسیر پایتون
گزینه دیگری که پیش روی ما قرار خواهد داشت، افزودن ماژول به مسیری است که پایتون ماژولها و بستهها را بررسی میکند. این روش درمقایسهبا روشی که در بالا گفته شد، دائمیتر است؛ بههمیندلیل، پیشنهاد میشود که این روش را جدی بگیرید و درصورت امکان آن را اجرا کنید.
برای اینکه بدانیم پایتون چه مسیری را بررسی میکند، Python Interpreter را باید ازطریق محیط برنامهنویسی خود اجرا کنیم:
python3
در مرحله بعد، ماژول sys را وارد میکنیم:
import sys
سپس، از پایتون درخواست میکنیم که مسیر سیستم را چاپ کند:
print(sys.path)
در مرحله بعد، چند خروجی بههمراه حداقل یک مسیر دریافت خواهیم کرد. درصورتیکه در محیط برنامهنویسی باشیم، بهاحتمال زیاد چند مورد را دریافت خواهیم کرد.
ما قصد داریم بهدنبال محیطی باشیم که درحالحاضر از آن استفاده میکنیم؛ اما ممکن است بخواهیم ماژول را به مسیر پایتون سیستم اصلیمان اضافه کنیم. در این شرایط، آنچه بهدنبالش هستیم، مشابه زیر خواهد بود:
Output '/usr/sammy/my_env/lib/python3.5/site-packages'
حالا میتوانیم فایل hello.py خودمان را به آن Directory منتقل کنیم. پس از تکمیل نیز، میتوانیم ماژول hello را مطابق معمول وارد کنیم:
import hello ...
اگر تمام مراحل را بهدرستی انجام داده باشیم، برنامه بدون هیچ مشکلی اجرا خواهد شد؛ اما اگر مشکلاتی در اجرای برنامه وجود داشت، مراحل را باید از اول مرور کنیم.
آموزش کامل Doctest در پایتون را در مقالهی زیر بخوانید.
جمعبندی
ساخت ماژول در پایتون مانند ایجاد هر فایل پایتون دیگرِ .py است. در این مقاله، سعی کردیم که آموزش ساخت ماژول در پایتون 3 را بهطور کامل و به سادهترین شکل ممکن ارائه دهیم. در اجرای کدها، دقت زیادی بهخرج دهید و هیچ نکتهای را نادیده نگیرید؛ زیرا درصورت اشتباه در هریک از این مراحل، بیشک برنامه بهدرستی اجرا نخواهد شد.
سؤالات متداول
1. ماژول پایتون چیست؟
ماژولهای پایتون فایلهای .py هستند که از کد پایتون تشکیل میشوند.
2. برای ساخت ماژول در پایتون 3 چه پیشنیازهایی باید داشته باشیم؟
در ابتدا، باید پایتون 3 را نصب و محیط برنامهنویسی را روی کامپیوتر یا سرور خود تنظیم کنید. حتماً این نکته را هم بهخاطر بسپارید که تنظیمات محیط برنامهنویسی باید مطابق با سیستمعاملتان انجام شود.
3. آیا دسترسی به ماژولها ازطریق دایرکتوری دیگر امکانپذیر خواهد بود؟
بله، برای انجام این کار چند گزینه پیش رو دارید.