📞 فراخوانی توابع در پایتون
⚙️ فراخوانی تابع چیست؟
فراخوانی تابع در پایتون یعنی اجرای دستورات داخل بدنه یک تابع. وقتی تابعی را صدا میزنید، برنامه اجرای خودش را به آن تابع منتقل میکند و دستوراتش را بهترتیب اجرا میکند. بعد از پایان تابع، برنامه به همان جایی برمیگردد که تابع فراخوانی شده بود.
🧩 سینتکس فراخوانی تابع
برای فراخوانی تابع، کافی است نام تابع را همراه با پرانتز بنویسید. اگر تابع پارامتر داشته باشد، باید مقادیر موردنظر را بهترتیب داخل پرانتز بگذارید.
def salam_bego(name): print(f"Salam {name}!") salam_bego("Ali") # خروجی: Salam Ali!
در این مثال:
salam_begoنام تابع است.nameپارامتر تابع است.رشته
"Ali"بهعنوان آرگومان به پارامترnameداده میشود.
🧭 انواع فراخوانی تابع
فراخوانی با پارامترهای ضروری
پارامترهایی که هنگام تعریف تابع مشخص شدهاند و باید حتماً مقدار بگیرند.فراخوانی با پارامترهای پیشفرض
پارامترهایی که مقدار اولیه دارند و اگر مقداردهی نشوند، از همان مقدار پیشفرض استفاده میشود.فراخوانی با پارامترهای متغیر
با استفاده از*argsو**kwargsمیتوانید تعداد نامحدودی آرگومان به تابع بفرستید.
🛠️ ۱. تعریف اولیه یک تابع
def function_name(parameters): """Optional docstring""" # Code block return result # Optional
👋 ۲. فراخوانی ساده توابع
def say_hello(): print("Hello, World!") say_hello() # خروجی: Hello, World!
📥 ۳. فراخوانی توابع با پارامترها
def greet(name): print(f"Hello, {name}!") greet("Ali") # خروجی: Hello, Ali!
📦 ۴. فراخوانی توابع با چندین پارامتر
def add(a, b): return a + b result = add(5, 3) print(result) # خروجی: 8
🧾 ۵. فراخوانی با پارامترهای پیشفرض
def greet(name="Guest"): print(f"Hello, {name}!") greet() # خروجی: Hello, Guest! greet("Sara") # خروجی: Hello, Sara!
✨ ۶. فراخوانی با تعداد نامشخص پارامتر (*args)
def add_all(*args): return sum(args) result = add_all(1, 2, 3, 4) print(result) # خروجی: 10
🗂️ ۷. فراخوانی با پارامترهای کلید-مقدار (**kwargs)
def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="Ali", age=30, city="Tehran") # خروجی: # name: Ali # age: 30 # city: Tehran
🔁 ۸. فراخوانی بازگشتی (Recursion)
def factorial(n): if n == 1: return 1 else: return n * factorial(n - 1) result = factorial(5) print(result) # خروجی: 120
⚡ ۹. فراخوانی توابع لامبدا (Lambda)
add = lambda x, y: x + y print(add(5, 3)) # خروجی: 8
🚀 ۱۰. نکات پیشرفته در فراخوانی توابع
ارسال لیست به تابع با *
def multiply(a, b, c): return a * b * c numbers = [2, 3, 4] print(multiply(*numbers)) # خروجی: 24
ارسال دیکشنری به تابع با **
def display_info(name, age, city): print(f"{name} is {age} years old and lives in {city}.") person = {"name": "Sara", "age": 25, "city": "Tehran"} display_info(**person) # خروجی: Sara is 25 years old and lives in Tehran.
🔍 پارامتر و آرگومان چه تفاوتی دارند؟
📌 پارامتر (Parameter)
متغیری است که در تعریف تابع مشخص میشود.
به تابع اجازه میدهد دادهها را دریافت کند.
داخل پرانتز بعد از نام تابع تعریف میشود.
🎯 آرگومان (Argument)
مقدار واقعی است که هنگام فراخوانی به پارامتر داده میشود.
مشخص میکند تابع با چه دادهای کار کند.
داخل پرانتز هنگام فراخوانی تابع قرار میگیرد.
def salam_bego(name): # name پارامتر است print(f"Salam {name}!") salam_bego("Ali") # "Ali" آرگومان است
🧬 انواع پارامترها در پایتون
۱. پارامترهای ضروری (Positional Arguments)
def jam(a, b): return a + b natije = jam(3, 5) # a=3, b=5
۲. پارامترهای پیشفرض (Default Arguments)
def salam_bego(name="Mehman"): print(f"Salam {name}!") salam_bego() # خروجی: Salam Mehman! salam_bego("Ali") # خروجی: Salam Ali!
۳. پارامترهای متغیر موقعیتی (*args)
def jam_hame(*adad): natije = 0 for adad in adad: natije += adad return natije print(jam_hame(1, 2, 3, 4)) # خروجی: 10
۴. پارامترهای متغیر کلیدی (**kwargs)
def chap_etelaat(**etelaat): for kelid, meghdar in etelaat.items(): print(f"{kelid}: {meghdar}") chap_etelaat(name="Ali", sen=30, shahr="Tehran")
۵. پارامترهای کیوردی (Keyword Arguments)
def taghsim(a, b): return a // b natije = taghsim(b=3, a=17)
🧠 نکات مهم
پارامترهای ضروری باید قبل از پارامترهای پیشفرض بیایند.
*argsباید قبل از**kwargsقرار بگیرد.ترتیب پارامترهای کیوردی مهم نیست، اما ترتیب پارامترهای موقعیتی مهم است.
مثال ترکیبی از انواع پارامترها
def tabe_nemone(a, b=2, *args, **kwargs): print(a, b, args, kwargs) tabe_nemone(1, 3, 4, c=3, d=4, x=5, y=6)
💡 کاربردهای فراخوانی توابع
تکرارپذیری کد: یک قطعه کد را بارها با ورودیهای مختلف اجرا کنید.
افزایش خوانایی: کد به بخشهای کوچکتر و قابلفهمتر تقسیم میشود.
مدیریت پیچیدگی: مسائل بزرگ را به زیرمسئلههای کوچکتر تقسیم کنید.
استفاده مجدد: از توابع در بخشهای مختلف برنامه استفاده کنید.
🧪 مثال عملی
def mohasebe_miangin(*adad): jam_adad = sum(adad) tedad_adad = len(adad) miangin = jam_adad / tedad_adad return miangin natayej_emtehan = [75, 80, 92, 68] miangin_nomre = mohasebe_miangin(*natayej_emtehan) print(miangin_nomre)
📝 جمعبندی
فراخوانی توابع یکی از مفاهیم پایهای و مهم در پایتون است. با یادگیری درست آن میتوانید کدهایی تمیزتر، خواناتر و قابلنگهداریتر بنویسید.




