فانکشن‌های Python

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

می‌توانید داده‌ها (به عنوان پارامتر نامیده می‌شوند) را به توابع منتقل کنید.

توابع می‌توانند داده‌ها را به عنوان نتیجه بازگردانند.

برای ایجاد تابع استفاده می‌شود

در Python از def کلید تعریف تابع:

مثال

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

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

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

مثال

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

اجرای نمونه

پارامتر

اطلاعات می‌تواند به عنوان پارامتر به توابع منتقل شود.

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

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

مثال

def my_function(fname):
  print(fname + " Gates")
my_function("Bill")
my_function("Steve")
my_function("Elon")

اجرای نمونه

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

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

اگر ما از تابع بدون پارامتر استفاده کنیم، از مقدار پیش‌فرض استفاده می‌شود:

مثال

def my_function(country = "China"):
  print("من از " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")

اجرای نمونه

با استفاده از لیست ارسال کنید

پارامترهایی که به توابع خود ارسال می‌کنید می‌توانند هر نوع داده‌ای باشند (مثلاً رشته، عدد، لیست، دیکشنری و غیره) و در داخل توابع به عنوان نوع داده‌ی مشابه در نظر گرفته می‌شوند.

مثلاً اگر لیست را به عنوان پارامتر ارسال کنید، زمانی که به توابع می‌رسد همچنان لیست (لیست) خواهد بود:

مثال

def my_function(food):
  برای x در food:
    print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)

اجرای نمونه

ارزش بازگشتی

برای اینکه توابع به شما ارزشی بازگردانند، از return عبارت:

مثال

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

اجرای نمونه

پارامترهای کلیدی

شما همچنین می‌توانید از نحو key = value برای ارسال پارامترها استفاده کنید.

ترتیب پارامترها مهم نیست.

مثال

def my_function(child3, child2, child1):
  print("بچه کوچک‌ترین است " + child3)
my_function(child1 = "Phoebe", child2 = "Jennifer", child3 = "Rory")

اجرای نمونه

در مستندات Python، واژه‌ی "پارامترهای کلیدی" معمولاً به اختصار به عنوان kwargs نامیده می‌شود.

پارامترهای غیرقابل پیش‌بینی

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

در این صورت، توابع یک تورپارامتر را دریافت خواهد کرد و می‌تواند به صورت مناسب به هر یک از عناصر دسترسی داشته باشد:

مثال

اگر تعداد پارامترها ناشناخته باشد، در ابتدای نام پارامتر از * استفاده کنید:

def my_function(*kids):
  print("بچه کوچک‌ترین است " + kids[2])
my_function("Phoebe", "Jennifer", "Rory")

اجرای نمونه

دستور pass

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

مثال

def myfunction:
  گذر

اجرای نمونه

ریکورسیون

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

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

توسعه‌دهندگان باید بسیار مراقب ریکورسیون باشند، زیرا می‌توان به راحتی یک تابع بی‌پایان نوشت یا از حافظه یا قدرت پردازنده بیش از حد استفاده کرد. اما، اگر به درستی نوشته شود، ریکورسیون می‌تواند روشی بسیار مؤثر و زیبا از برنامه‌نویسی باشد.

در این مثال،tri_recursion() این را به عنوان یک تابعی که خود را فراخوانی می‌کند ("ریکورس") تعریف می‌کنیم. ما از متغیر k به عنوان داده استفاده می‌کنیم و در هر ریکورس، آن را کاهش می‌دهیم (-1). وقتی که شرط بزرگتر از 0 نیست (مثلاً وقتی که برابر با 0 است)، ریکورس پایان می‌یابد.

برای توسعه‌دهندگان جدید ممکن است نیاز باشد تا مدتی برای درک نحوه کارکرد آن زمان ببرند، بهترین روش تست و تغییر آن است.

مثال

مثال‌های ریکورسیون:

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)

اجرای نمونه