توابع

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Python-menu.png
موارد آموزشی
۱خانه
۲مقدمه
۳شروع کار
۴دستور زبان
۵اظهار نظرها
۶متغیرها
۷انواع داده‌ها
۸اعداد
۹تبدیل نوع
۱۰رشته‌ها
۱۱Booleans
۱۲عملگرها
۱۳لیست‌ها
۱۴تاپل‌ها
۱۵مجموعه‌ها
۱۶دیکشنری‌ها
۱۷If...Else
۱۸حلقهٔ While
۱۹حلقهٔ For
۲۰توابع
۲۱Lambda
۲۲آرایه‌ها
۲۳کلاس‌ها / اشیاء
۲۴ارث‌بری
۲۵Iteratorها
۲۶دامنه
۲۷ماژول‌ها
۲۸تاریخ و زمان
۲۹JSON
۳۰RegEx
۳۱PIP
۳۲Try...Except
۳۳ورودی کاربر
۳۴قالب‌بندی رشته
مدیریت فایل
یادگیری ماشین
MySQL در پایتون
MongoDB در پایتون
مرجع پایتون
مرجع ماژول
چگونه در پایتون؟
مثال‌های پایتون

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

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

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

ایجاد یک تابع

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

مثال

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

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

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

مثال

1 def my_function():
2   print("Hello from a function")
3 
4 my_function()


مشاهدهٔ نتیجه


آرگومان‌ها

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

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

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

مثال

1 def my_function(fname):
2   print(fname + " Refsnes")
3 
4 my_function("Emil")
5 my_function("Tobias")
6 my_function("Linus")


مشاهدهٔ نتیجه


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

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

عبارت parameter و argument را می‌توان برای یک منظور استفاده کرد: اطلاعاتی که به داخل تابع ارسال (به انگلیسی: pass) می‌شوند.

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

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

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

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

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

مثال

این تابع ۲ آرگومان نیاز دارد و ۲ آرگومان می‌گیرد:

1 def my_function(fname, lname):
2   print(fname + " " + lname)
3 
4 my_function("Emil", "Refsnes")


مشاهدهٔ نتیجه


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

مثال

این تابع دو آرگومان نیاز دارد اما فقط ۱ آرگومان می‌گیرد:

1 def my_function(fname, lname):
2   print(fname + " " + lname)
3 
4 my_function("Emil")


مشاهدهٔ نتیجه


آرگومان های تصادفی، *args

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

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

مثال

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

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


مشاهدهٔ نتیجه


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

آرگومان های keyword

همچنین می‌توانید آرگومان‌ها را با نحو key = value ارسال کنید

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

مثال

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


مشاهدهٔ نتیجه


عبارت آرگومان‌های Keyword را اغلب در مستندات پایتون بصورت kwargs خلاصه می‌کنند.

آرگومان های keyword تصادفی، **kwargs

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

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

مثال

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

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


مشاهدهٔ نتیجه


آرگومان‌های تصادفی Kwor را اغلب در مستندات پایتون بصورت **kwargs خلاصه می‌کنند.

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

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

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

مثال

1 def my_function(country = "Norway"):
2   print("I am from " + country)
3 
4 my_function("Sweden")
5 my_function("India")
6 my_function()
7 my_function("Brazil")


مشاهدهٔ نتیجه


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

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

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

مثال

1 def my_function(food):
2   for x in food:
3     print(x)
4 
5 fruits = ["apple", "banana", "cherry"]
6 
7 my_function(fruits)


مشاهدهٔ نتیجه


برگرداندن مقدارها

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

مثال

1 def my_function(x):
2   return 5 * x
3 
4 print(my_function(3))
5 print(my_function(5))
6 print(my_function(9))


مشاهدهٔ نتیجه


عبارت pass

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

مثال

1 def myfunction():
2   pass


مشاهدهٔ نتیجه


بازگشت

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

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

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

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

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

مثال

مثال بازگشت:

 1 def tri_recursion(k):
 2   if(k > 0):
 3     result = k + tri_recursion(k - 1)
 4     print(result)
 5   else:
 6     result = 0
 7   return result
 8 
 9 print("\n\nRecursion Example Results")
10 tri_recursion(6)


مشاهدهٔ نتیجه



منابع آموزشی