توابع
تابع بلوکی از کد است که فقط هنگامی که فراخوانی شود اجرا میشود.[۱]
میتوان به داخل تابع داده پاس کرد که به آن پارامتر گفته میشود.
یک تابع میتواند داده را بعنوان نتیجه برگرداند.
محتویات
ایجاد یک تابع
در پایتون تابع با استفاده از کلمه کلیدی 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")
پارامترها یا آرگومان ها؟
عبارت 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")
آرگومان های 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 که به تابع ارسال خواهند شد را نمیدانید، دو ستاره **
پیش از نام پارامتر در تعریف تابع اضافه کنید.
با این کار تابع یک دیکشنری از آرگومانها دریافت میکند و براین اساس میتواند به آیتمها دسترسی داشته باشد:
مثال
اگر تعداد آرگومانهای keyword ناشناخته است، دو **
پیش از نام پارامتر اضافه کنید:
1 def my_function(**kid):
2 print("His last name is " + kid["lname"])
3
4 my_function(fname = "Tobias", lname = "Refsnes")
مقدار پیش فرض پارامتر
مثال زیر نحوه استفاده از مقدار پیش فرض پارامتر را نشان میدهد.
اگر یک تابع را فراخوانی کنیم، از مقدار پیش فرض استفاده میکند:
مثال
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)
منابع آموزشی