آموزش توابع در پایتون
منبع: https://rasanika.com
تابع قطعه کدی است که فقط زمانی اجرا می شود که فراخوانی گردد.
شما می توانید داده ها را (به عنوان پارامتر) به یک تابع منتقل کنید.
یک تابع می تواند در خروجی، داده ها را برگرداند.
ایجاد یک تابع
در پایتون یک تابع با استفاده از کلمه کلیدی 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)
در استفاده از توابع بازگشتی باید بسیار محتاط باشید تا کد پایان ناپذیر و حلقه های بینهایت ایجاد نکنید.