ماژول های پایتون فایل های .py هستند که از کد پایتون تشکیل شده اند. هر فایل پایتون را می توان به عنوان ماژول ارجاع داد. این آموزش شما را از طریق نوشتن ماژول های پایتون برای استفاده در سایر فایل های برنامه نویسی راهنمایی می کند.
برخی از ماژول ها از طریق کتابخانه استاندارد پایتون در دسترس هستند و بنابراین با نصب پایتون شما نصب می شوند. سایر موارد را می توان با pip manager پایتون نصب کرد. علاوه بر این ، می توانید ماژول های پایتون خود را ایجاد کنید زیرا ماژول ها از فایل های .py پایتون تشکیل شده اند.
نوشتن و وارد کردن(import) ماژول ها در پایتون
نوشتن ماژول مانند نوشتن سایر فایل های پایتون است. ماژول ها می توانند شامل تعاریف توابع ، کلاس ها و متغیرهایی باشند که می توانند در سایر برنامه های پایتون مورد استفاده قرار گیرند.
از محیط برنامه نویسی Python 3، بیایید با ایجاد یک فایل hello.py شروع کنیم که بعداً به یک فایل دیگر وارد می کنیم.
# hello.py
# Define a function
def world():
print("Hello, World!")
اگر برنامه را روی خط فرمان با python hello.py
اجرا کنیم ، هیچ اتفاقی نمی افتد ، زیرا به برنامه نگفته ایم که کاری انجام دهد.
بیایید یک فایل دوم در همان دایرکتوری به نام main_program.py ایجاد کنیم تا بتوانیم ماژولی را که ایجاد کرده ایم import کنیم و سپس تابع را فراخوانی کنیم. این فایل باید در یک دایرکتوری باشد تا پایتون بداند ماژول را از کجا پیدا کند زیرا ماژول داخلی نیست.
# main_program.py
# Import hello module
import hello
# Call function
hello.world()
از آنجا که ما یک ماژول را وارد می کنیم ، باید با ارجاع نام ماژول در نماد نقطه تابع را فراخوانی کنیم. در عوض ما می توانیم ماژول را با from hello import world
وارد کنیم و عملکرد را مستقیماً به عنوان world () فراخوانی کنیم.
اکنون می توانیم برنامه را در خط فرمان اجرا کنیم:
$ python main_program.py
وقتی این کار را انجام می دهیم ، خروجی زیر را دریافت می کنیم:
Hello, World!
برای مشاهده نحوه استفاده از متغیرها در یک ماژول ، بیایید یک تعریف متغیر در فایل hello.py خود اضافه کنیم:
# hello.py
# Define a function
def world():
print("Hello, World!")
# Define a variable
shark = "Sammy"
بعد ، ما متغیر را در یک تابع print () در فایل main_program.py خود فراخوانی می کنیم:
# main_program.py
# Import hello module
import hello
# Call function
hello.world()
# Print variable
print(hello.shark)
پس از اجرای مجدد برنامه ، خروجی زیر را دریافت می کنیم:
Hello, World!
Sammy
در نهایت ، بیایید یک کلاس در فایل hello.py نیز تعریف کنیم. ما کلاس Octopus را با ویژگی های نام و رنگ و یک تابع ایجاد می کنیم که هنگام فراخوانی ویژگی ها را چاپ می کند.
# hello.py
# 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 اضافه می کنیم:
# 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 بنویسیم. برای مثال ، می توانیم یکی از ویژگی های کلاس مانند jesse.color را بدون اشاره به نام ماژول hello فراخوانی کنیم.
وقتی برنامه را اجرا می کنیم ، خروجی زیر را دریافت می کنیم:
Hello, World!
Sammy
This octopus is orange.
Jesse is the octopus's name.
مهم است که به خاطر داشته باشید که اگرچه ماژول ها اغلب تعریف هستند ، اما می توانند کد را نیز پیاده سازی کنند. برای مشاهده نحوه عملکرد ، اجازه دهید فایل hello.py خود را بازنویسی کنیم تا عملکرد world () را پیاده سازی کند:
# hello.py
# 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 را اجرا می کنیم خروجی زیر را دریافت می کنیم:
Hello, World!
این به این دلیل است که ماژول hello تابع world () را پیاده سازی کرده و سپس به main_program.py منتقل می شود و هنگام اجرای main_program.py اجرا می شود.
ماژول یک فایل برنامه پایتون است که از تعاریف یا کدی تشکیل شده است که می توانید از آن در سایر فایل های برنامه پایتون استفاده کنید.
دسترسی به ماژول ها از دایرکتوری دیگر
ماژول ها ممکن است برای بیش از یک پروژه برنامه نویسی مفید باشند ، و در این صورت نگه داشتن یک ماژول در یک دایرکتوری خاص که به یک پروژه خاص مرتبط است ، منطقی به نظر نمی رسد.
اگر می خواهید از ماژول پایتون در مکانی غیر از همان دایرکتوری که برنامه اصلی شما در آن است استفاده کنید ، چند گزینه دارید.
اضافه کردن مسیرها
یکی از گزینه ها فراخوانی مسیر ماژول از طریق فایل های برنامه نویسی است که از آن ماژول استفاده می کنند. این باید بیشتر به عنوان یک راه حل موقت در نظر گرفته شود که می تواند در طول فرایند توسعه انجام شود زیرا ماژول را در سراسر سیستم در دسترس قرار نمی دهد.
برای افزودن مسیر یک ماژول به یک فایل برنامه نویسی دیگر ، ابتدا با وارد کردن ماژول sys در کنار سایر ماژول هایی که می خواهید در فایل اصلی برنامه خود استفاده کنید ، وارد کنید.
اگر با ماژول sys آشنا نیستید، پیشنهاد میکنیم ویدیو آموزش ماژول 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 را بدون خطا اجرا کرده و خروجی مشابه بالا را هنگامی که hello.py در یک پوشه قرار داشت دریافت کنید.
اضافه کردن ماژول به مسیر پایتون
گزینه دوم این است که ماژول را به مسیری که پایتون ماژول ها و بسته ها را بررسی می کند اضافه کنید. این یک راه حل دائمی است که ماژول را در سراسر محیط یا در سراسر سیستم در دسترس قرار می دهد و این روش را قابل حمل تر می کند.
برای اینکه بدانید پایتون چه مسیری را بررسی می کند ، مترجم پایتون را از محیط برنامه نویسی خود اجرا کنید:
$ python3
بعد ، ماژول sys را وارد کنید:
>>> import sys
سپس از پایتون بخواهید مسیر سیستم را چاپ کند:
>>> print(sys.path)
در اینجا ، خروجی با حداقل یک مسیر سیستم دریافت خواهید کرد. اگر در محیط برنامه نویسی هستید، ممکن است چندین مورد دریافت کنید. شما می خواهید محیطی را که در حال حاضر از آن استفاده می کنید جستجو کنید ، اما ممکن است بخواهید ماژول را به مسیر اصلی سیستم پایتون خود اضافه کنید. آنچه شما به دنبال آن هستید مشابه این خواهد بود:
'/usr/sammy/my_env/lib/python3.5/site-packages'
اکنون می توانید فایل hello.py خود را به آن پوشه منتقل کنید. پس از اتمام کار ، می توانید ماژول hello را به طور معمول وارد کنید:
import hello
...
وقتی برنامه خود را اجرا می کنید ، باید بدون خطا کامل شود.
تغییر مسیر ماژول شما می تواند اطمینان حاصل کند که می توانید بدون درنظر گرفتن اینکه در چه پوشه ای هستید به ماژول دسترسی پیدا کنید. این امر به خصوص در صورتی مفید است که بیش از یک پروژه به یک ماژول خاص اشاره داشته باشد.
ارسال نظر