آموزش توابع در پایتون

تابع در پایتون

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

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

یک تابع می تواند در خروجی، داده ها را برگرداند.

ایجاد یک تابع

در پایتون یک تابع با استفاده از کلمه کلیدی 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 + " Akbari")

my_function("Reza")
my_function("Ali")
my_function("Mohammad")

اغلب در داکیومنت های پایتون به آرگومان ها args هم گفته می‌شود.

تفاوت پارامتر و آرگومان

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

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

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

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

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

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

مثال

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

my_function("Emil", "Refsnes")

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

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

my_function("Emil")

آرگومان های دلخواه، *args

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

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

مثال

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

my_function("Emil", "Tobias", "Linus")

به آرگومان های دلخواه اغلب در داکیومنت پایتون *args هم گفته می‌شود.

آرگومان های کلیدواژه

همچنین می توانید آرگومان ها را به فرمت key = value وارد کنید.

در این صورت ترتیب آرگومان ها مهم نیست.

مثال

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

my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")

به آرگومان های کلیدواژه اغلب kwargs هم گفته می‌شود.

آرگومان های کلیدواژه دلخواه، **kwargs

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

در این صورت تابع یک دیکشنری از آرگومان ها را دریافت می کند:

مثال

def my_function(**kid):
  print("His last name is " + kid["lname"])

my_function(fname = "Tobias", lname = "Refsnes")

به آرگومان های کلیدواژه دلخواه، اغلب **kwargs هم گفته می‌شود.

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

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

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

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

my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")

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

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

به عنوان مثال، اگر لیستی را به عنوان آرگومان ارسال کنید، زمانی که به تابع برسد، همچنان یک لیست خواهد بود:

مثال

def my_function(food):
  for x in 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))

دستور pass

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

مثال

def myfunction():
  pass

آرگومان های بدون کلیدواژه

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

مثال

def my_function(x, /):
  print(x)

my_function(3)

در این صورت اگر بخواهید از کلیدواژه استفاده کنید، با خطا مواجه خواهید شد:

مثال

def my_function(x, /):
  print(x)

my_function(x = 3)

آرگومان های فقط کلیدواژه

برای تعیین اینکه یک تابع می تواند فقط آرگومان های کلیدواژه‌ای داشته باشد، عبارت *, را قبل از تعریف آنها وارد کنید:

مثال

def my_function(*, x):
  print(x)

my_function(x = 3)

در این صورت اگر بخواهید یک آرگومان موقعیتی ارسال کنید، با خطا مواجه خواهید شد:

مثال

def my_function(*, x):
  print(x)

my_function(3)

ترکیب انواع آرگومان ها

می توانید دو نوع آرگومان را در یک تابع ترکیب کنید.

هر آرگومان قبل از عبارت / , فقط دارای موقعیت و هر آرگومان بعد از *, فقط دارای کلیدواژه است.

مثال

def my_function(a, b, /, *, c, d):
  print(a + b + c + d)

my_function(5, 6, c = 7, d = 8)

توابع بازگشتی

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

مثال تابع بازگشتی

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)

در استفاده از توابع بازگشتی باید بسیار محتاط باشید تا کد پایان ناپذیر و حلقه های بی‌نهایت ایجاد نکنید.

مجموعهآموزش پایتون از صفر(23 پست)
1.پایتون چیست؟ مقدمه پایتون10 ماه قبل2.برنامه نویسی پایتون را چطور شروع کنیم؟10 ماه قبل3.آموزش سینتکس (نحوه نوشتن) پایتون10 ماه قبل4.آموزش متغیرهای پایتون10 ماه قبل5.آموزش انواع داده در پایتون10 ماه قبل6.آموزش اعداد در پایتون10 ماه قبل7.آموزش Casting (تبدیل نوع داده) در پایتون10 ماه قبل8.آموزش رشته در پایتون10 ماه قبل9.آموزش بولین یا Boolean در پایتون10 ماه قبل10.آموزش عملگرهای پایتون10 ماه قبل11.آموزش لیست در پایتون10 ماه قبل12.آموزش تاپل یا چندتایی در پایتون9 ماه قبل13.آموزش Set یا مجموعه در پایتون8 ماه قبل14.آموزش نوع داده دیکشنری در پایتون8 ماه قبل15.آموزش شرط if ... else در پایتون8 ماه قبل16.آموزش حلقه while در پایتون8 ماه قبل17.آموزش حلقه for در پایتون8 ماه قبل18.آموزش توابع در پایتون8 ماه قبل19.آموزش توابع Lambda (لامبدا) در پایتون8 ماه قبل20.آموزش آرایه در پایتون7 ماه قبل21.آموزش کلاس و Object در پایتون7 ماه قبل22.آموزش ارث بری یا وراثت در پایتون7 ماه قبل23.آموزش تکرارگر یا iterator در پایتون7 ماه قبل

کامنت ها