فونکشن‌های 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 = \"Pakistan\"):
  print("من از " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")

اجرای نمونه

با ارسال List

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

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

نمونه

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")

اجرای نمونه

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

پارامترهای نامحدود

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

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

نمونه

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

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)

اجرای نمونه