مقدمه

یکی از بزرگترین مزایای استفاده از توابع، امکان سازماندهی کد در بخش‌های منطقی و قابل استفاده مجدد است. شما می‌توانید با قرار دادن توابع مرتبط در یک فایل جداگانه، یک «ماژول» (module) بسازید. سپس می‌توانید این ماژول را در هر برنامه دیگری که به آن توابع نیاز دارد، «وارد» یا import کنید. این کار به شما کمک می‌کند تا فایل اصلی برنامه خود را تمیز و متمرکز نگه دارید و از تکرار کد جلوگیری کنید.

ایجاد یک ماژول

بیایید تابع ساخت پیتزا از درس قبل را به یک ماژول جداگانه منتقل کنیم. یک فایل جدید به نام pizza.py در همان پوشه‌ای که فایل اصلی برنامه شما قرار دارد، ایجاد کنید و کد زیر را در آن قرار دهید.

Copy Icon pizza.py
def make_pizza(size, *toppings):
    """Summarize the pizza we are about to make."""
    print(f"\nMaking a {size}-inch pizza with the following toppings:")
    for topping in toppings:
        print(f"- {topping}")

این فایل اکنون یک ماژول به نام pizza است که شامل تابع make_pizza می‌باشد. حالا بیایید ببینیم چگونه می‌توانیم از این ماژول در یک فایل دیگر استفاده کنیم.

وارد کردن ماژول‌ها (Importing)

روش‌های مختلفی برای وارد کردن یک ماژول به برنامه اصلی وجود دارد.

۱. وارد کردن کل ماژول

ساده‌ترین راه، وارد کردن کل فایل ماژول است. در این حالت، برای استفاده از هر تابع داخل ماژول، باید نام ماژول را به همراه یک نقطه قبل از نام تابع بیاورید.

Copy Icon PYTHON
import pizza

pizza.make_pizza(16, 'pepperoni')
pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

این روش بسیار خوانا است، زیرا به وضوح مشخص می‌کند که تابع make_pizza از کدام ماژول آمده است.

۲. وارد کردن توابع خاص

شما همچنین می‌توانید تنها توابع خاصی را که به آنها نیاز دارید، از یک ماژول وارد کنید. در این حالت، دیگر نیازی به نوشتن نام ماژول قبل از نام تابع نیست.

Copy Icon PYTHON
from pizza import make_pizza

make_pizza(16, 'pepperoni')

برای وارد کردن چندین تابع، می‌توانید نام آنها را با کاما از هم جدا کنید: from module_name import function_0, function_1, function_2.

استفاده از نام مستعار (Alias)

اگر نام یک تابع یا ماژول طولانی است، یا اگر نام آن با نام دیگری در پروژه شما تداخل دارد، می‌توانید هنگام وارد کردن، یک نام مستعار (alias) برای آن تعیین کنید.

تعیین نام مستعار برای یک تابع

با استفاده از کلمه کلیدی as، می‌توانید یک نام مستعار برای یک تابع تعیین کنید. این کار به شما اجازه می‌دهد تا نام کوتاه‌تری برای فراخوانی تابع استفاده کنید.

Copy Icon PYTHON
from pizza import make_pizza as mp

mp(16, 'pepperoni')

در اینجا، ما نام مستعار mp را برای تابع make_pizza تعیین کرده‌ایم و از این پس می‌توانیم از این نام کوتاه شده برای فراخوانی آن استفاده کنیم.

تعیین نام مستعار برای یک ماژول

در کد زیر با استفاده از کلمه کلیدی as، یک نام مستعار برای کل ماژول تعیین می‌کنیم. این کار زمانی مفید است که نام ماژول طولانی باشد یا بخواهید کد خود را کوتاه‌تر و خواناتر کنید.

Copy Icon PYTHON
import pizza as p

p.make_pizza(16, 'pepperoni')

این کار نیز خوانایی کد را حفظ می‌کند و در عین حال از تکرار نام‌های طولانی جلوگیری می‌کند.

وارد کردن تمام توابع یک ماژول

شما می‌توانید با استفاده از ستاره (`*`)، تمام توابع یک ماژول را به صورت یکجا وارد کنید. اما این کار معمولاً توصیه نمی‌شود، زیرا اگر ماژول توابعی با نام‌های مشابه توابع موجود در پروژه شما داشته باشد، باعث بازنویسی و ایجاد باگ‌های غیرمنتظره می‌شود.

Copy Icon PYTHON
from pizza import *

make_pizza(16, 'pepperoni')

در این درس با مفهوم ماژول‌ها و نحوه استفاده از آنها برای سازماندهی بهتر توابع آشنا شدیم. دیدیم که چگونه می‌توان با استفاده از دستور import، کدهای قابل استفاده مجدد را به برنامه‌های خود اضافه کرد. این یکی از اصول بنیادی برای نوشتن برنامه‌های بزرگ و قابل نگهداری در پایتون است. در درس بعدی، با «توابع لامبدا» (Lambda Functions) آشنا خواهیم شد که راهی برای ساخت توابع کوچک و ناشناس به صورت خطی فراهم می‌کنند.