آموزش کار با توابع (functions) در پایتون (Python)

آموزش کار با توابع (functions) در پایتون (Python)

توابع در برنامه نویسی قطعات کد ساخت یافته ای هستند که قابلیت استفاده دوباره و چند باره را دارند

هر تابع عملیات خاصی را انجام می دهد، و به این شکل می توانیم قطعه کد بزرگی را به قطعات کوچک تر تقسیم کنیم که هم خوانایی کد بالاتر برود و هم منظم تر شوند.

یک تابع بلاکی از کدها هستند که فقط در صورت فراخوانی اجرا می شوند.

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

زمان مطالعه: 3 دقیقه
بازدید: 3353
پرسش و پاسخ: 0

ایجاد یک تابع در پایتون (Python)

در پایتون یک تابع با کلمه کلیدی def تعریف می شود.

مثال: در زیر یک تابع با نام my_function ایجاد شده است که وظیفه چاپ یک مقدار رشته ای را دارد.

def my_function():
  print("Hello from a function")

فراخوانی یک تابع

برای استفاده از مقدار برگشتی یک تابع حتما باید آن را فراخوانی کنید. در زیر طریقه فراخوانی یک تابع را برای شما شرح داده ایم.

برای فراخوانی یک تابع ابتدا نام تابع و بعد پرانتز باز و بسته را قرار می دهیم.

def my_function():
  print("Hello from a function")
my_function()

فراخوانی یک تابع در پایتون (Python)

آرگومان ها (Arguments)

اطلاعات را می توان به عنوان آرگومان ها به توابع پاس بدهیم.

آرگومان ها بعد از نام تابع، در داخل پرانتزها قرار می گیرند، می توانید هر تعداد آرگومان که بخواهید به یک تابع پاس بدهید، فقط باید آن ها را با کاما از یکدیگر جدا کنید.

مثال: تابع زیر یک آرگومان به اسم (fname) دارد، وقتی تابع فراخوانی می شود یک نام کوچک به آن پاس می دهیم و در داخل خود تابع نام کامل را چاپ می کند.

def my_function(fname):
  print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")

آرگومان ها (Arguments) توابع در پایتون (Python)

نکته: در مستندات پایتون اغلب به جای Arguments از نام کوتاه شده args استفاده شده است.

پارامتر یا آرگومان ؟

هر دو اصطلاح آرگومان و پارامتر می توانند برای یک کار استفاده شوند و آن هم انتقال اطلاعات به یک تابع است.

نکته : از دیدگاه یک تابع

یک پارامتر متغیری است که در داخل پرانتز در تعریف یک تابع ذکر شده است.

یک آرگومان مقداری است که هنگام فراخوانی به تابع ارسال می شود.

تعداد آرگومان ها

به طور پیش فرض یک تابع باید با تعداد آرگومان درست فراخوانی شود، به این معنی که اگر تابع انتظار 2 آرگومان را دارد، شما باید تابع را با دو آرگومان فراخوانی کنید، نه بیشتر و نه کمتر.

مثال: در این مثال تابع انتظار 2 آرگومان را دارد و 2 آرگومان را نیز دریافت می کند.

def my_function(fname, lname):
  print(fname + " " + lname)
my_function("Emil", "Refsnes")

تعداد آرگومان های تابع در پایتون (Python)

اگر بخواهید تابع را با 1 آرگومان و یا 3 آرگومان فراخوانی کنید با خطا مواجه می شوید.

مثال: در این مثال تابع انتظار 2 آرگومان را دارد ولی تنها 1 آرگومان فراخوانی شده است و با خطا مواجه می شود.

def my_function(fname, lname):
  print(fname + " " + lname)
my_function("Emil")

تعداد آرگومان های تابع در پایتون (Python)

توابع خودسرانه، *args

اگر نمی دانید که چه تعداد آرگومان به تابع شما منتقل می شود می توانید از یک * قلل از نام پارامتر در تعریف یک تابع استفاده کنید.

به این ترتیب تابع چندین آرگومان را دریافت می کند و بر این اساس می توانید به آیتم های آن دسترسی پیدا کنید.

مثال: در این مثال به دلیل اینکه تعداد آرگومان ها مشخص نیست از یک * قبل از نام پارامتر استفاده کرده است.

def my_function(*kids):
  print("The youngest child is " + kids[2])
my_function("Emil", "Tobias", "Linus")

توابع خودسرانه در پایتون (Python)

نکته: در مستندات پایتون برای استفاده از توابع خودسرانه اغلب از کوتاه شده *args استفاده می شود.

Keyword Arguments

می توانید آرگومان ها را به شکل key : value ارسال کنید.

به این شکل ترتیب آرگومان ها مهم نخواهد بود.

مثال: در این مثال آرگومان های تابع my_function به شکل key : value ارسال شده اند.

def my_function(child3, child2, child1):
  print("The youngest child is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")

Keyword Arguments توابع در پایتون (Python)

نکته: در مستندات پایتون عبارت  keyword arguments به kwargs کوتاه می شود.

Keyword Arguments خودسرانه، **kwargs

اگر نمی دانید که چند Keyword Arguments به تابع شما منتقل می شود، قبل از نام پارامتر در تعریف تابع از ** استفاده کنید.

به این شکل تابع Dictionary آرگومان ها را دریافت می کند و بر این اساس می توانید به آیتم های آن ها دسترسی پیدا کنید.

مثال: در این مثال چون تعداد Keyword Arguments های تابع مشخص نیست از ** قبل از نام پارامتر kid استفاده کرده است.

def my_function(**kid):
  print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")

Keyword Arguments خودسرانه توابع در پایتون (Python)

نکته: در مستندات پایتون عبارت   keyword arguments خودسرانه به **kwargs کوتاه می شود.

مقادیر پیش فرض پارامترها

در مثال زیر نحوه استفاده از مقادیر پیش فرض پارامترها نشان داده شده است.

اگر تابع را بدون آرگومان فراخوانی کنیم از مقدار پیش فرض استفاده می کند.

def my_function(country = "Norway"):
  print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")

مقادیر پیش فرض پارامترها توابع در پایتون (Python)

همانطور که می بینید اگر به تابع آرگومان ارسال نکنیم از مقدار پیش فرض تعریف شده پارامترها در تعریف در تابع استفاده می کند.

پاس دادن یک لیست به عنوان آرگومان

می توانید انواع داده های قابل پیمایش (رشته در پایتون , لیست در پایتون , تاپل در پایتون , مجموعه در پایتون , دیکشنری در پایتون)  را به عنوان آرگومان به یک تابع ارسال کنید و در داخل تابع بسته به نوع مقدار به همان شکل با آن رفتار شود.

به عنوان مثال اگر یک لیست را به عنوان آرگومان به یک تابع پاس دهید، در داخل تابع هم مانند یک لیست با آن رفتار می شود.

def my_function(food):
  for x in food:
    print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)

پاس دادن یک لیست به عنوان آرگومان توابع در پایتون (Python)

مقادیر برگشتی

برای این که یک تابع مقداری را برای ما برگشت بدهد، از دستور Return استفاده می کنیم.

مثال: در این مثال تابع زیر مقداری را برگشت می دهد.

def my_function(x):
  return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))

مقادیر برگشتی توابع در پایتون (Python)

دستور pass در توابع

در تعریف یک تابع بلوک آن نمی تواند خالی از دستور باشد، اما اگر به هر دلیلی یک تابع بدون محتوا داشتید برای جلوگیری از بروز خطا از دستور pass استفاده کنید.

مثال: در این مثال یک تابع بدون محتوا تعریف شده است که برای جلوگیری از بروز خطا از دستور pass استفاده شده است.

def myfunction():
  pass

دستور pass در توابع در پایتون (Python)

Rrcurtion (بازگشت)

در پایتون یک تابع می تواند خودش را درون خودش فراخوانی کند.

Recurtion یک مفهوم رایج در ریاضیات و برنامه نویسی است. این بدین معنا است که شما می توانید یک تابع را در خودش فراخوانی کنید. این بدین معناست که شما می توانید داده ها را پیمایش کنید تا به نتیجه برسید.

برنامه نویسان باید در استفاده از Recurtion بسیار محتاط باشند، نوشتن یک تابع که هرگز پایان نمی پذیرد یا تابعی که از حافظه زیاد یا قدرت پردازنده زیاد استفاده می کند بسیار آسان است. با این حال، هنگامی که Recurtion به درستی نوشته شود می تواند یک رویکرد ریاضیاتی زیبا و بسیار کارآمد برای برنامه نویسی باشد.

در این مثال، tri_recurtion() یک تابعی است که تعریف کرده ایم و خودش را صدا می زند. از متغیر k به عنوان داده استفاده کرده ایم، که با هر بار صدا زدن تابع درون خودش یک واحد کاهش می یابد. بازگشت زمانی پایان می پذیرد که شرط بیشتر از 0 نباشد (یعنی وقتی 0 باشد)

اگر بخواهم عامیانه توضیح بدهم اینطور می شود که از مقدار 6 به عنوان ورودی اولیه استفاده می کند و هر بار تابع  در صدا زدن خودش یک واحد از مقدار ورودی کم می کند و هر بار تابع جمع اعداد مقدار ورودی تا 1 را محاسبه و در خروجی نمایش می دهد.

برای یک توسعه دهنده تازه کار مدتی طول می کشد تا بفهمد که این مساله دقیقا چگونه عمل می کند، برای کشف این مساله بهترین راه حل تمرین و آزمایش کردن آن است.

def tri_recursion(k):
  if(k > 0):
    result = k + tri_recursion(k - 1)
    print(result)
  else:
    result = 0
  return result
print("\n\nRecursion Example Results")
tri_recursion(6)

Rrcurtion (بازگشت) توابع در پایتون (Python)

مبحث توابع هم به پایان رسید، در مقاله بعدی درباره مبحث Lambda در پایتون با شما حرف خواهیم زد.

بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده