Python Functions
ساختن یک تابع
در پایتون برای تعریف تابع از کلیدواژه def
استفاده میکنیم.
def my_function():
print("Hello from a function")
فراخوانی یک تابع
جهت فراخواندن یک تابع، از اسم تابع همراه با پرانتز استفاده میکنیم.
آرگومانها
میتوان اطلاعات را به عنوان آرگومان به تابع داد.
آرگومانها بعد از اسم تابع داخل پرانتز مشخص میشوند. هر تعداد آرگومان که بخواهید میتوانید به تابع اضافه کنید، فقط کافی است آنها را بوسیله علامت کاما از هم جدا کنید.
در کد زیر تابع دارای یک آرگومان (fname) است. زمانی که تابع فراخوانی میشود، همراه با آن یک اسم را به تابع میدهیم که در تابع از آن جهت پرینت کردن اسم کامل (نام و نام خانوادگی) استفاده میشود.
پارامتر یا آرگومان؟
دو واژه آرگومان و پارامتر را میتوان برای یک چیز به کار برد: اطلاعاتی که به تابع داده میشود.
پارامتر متغیرهای لیست شده داخل پرانتز در تعریف تابع است.
آرگومان مقداری است که به تابع در زمان فراخوانی آن فرستاده میشود.
تعداد آرگومانها
به صورت پیشفرض یک تابع باید با تعداد درستی از آرگومانها فراخوانده شود. به این معنی که اگر تابع انتظار دارد به آن دو آرگومان داده شود، شما میبایست که به تابع دو آرگومان بدهید، نه کمتر و نه بیشتر.
در کد زیر تابع انتظار دو آرگومان را دارد.
اگر بخواهید که تابع فوق رابا یک یا 3 آرگومان فرا بخوانید با خطا مواجه خواهید شد.
آرگومانهای دلبخواهی args*
اگر نمیدانید که چند آرگومان به تابع شما داده میشود، یک ستاره *
قبل از اسم پارامتر در تعریف تابع اضافه کنید.
در این حالت تابع یک تاپل از آرگومانها را دریافت میکند و میتواند مطابق آنچه برایش تعریف شده به آیتمها دسترسی داشته باشد.
آرگومانها به صورت کلیدواژه
میتوان آرگومانها را به صورت نوشتار key = value هم فرستاد.
در این حالت ترتیب آرگومانها مهم نیست.
آرگومانهای کلیدواژه دلبخواهی kwargs**
اگر نمیدانید که تابع شما چند آرگومان کلیدواژه را دریافت میکند، دو ستاره قبل از اسم پارامتر در تعریف تابع اضافه کنید.
در این حالت تابع یک دیکشنری از آرگومانها را دریافت و مطابق آنچه برایش تعریف شده به آیتمهای آن دسترسی خواهد داشت.
پارامتر با مقدار پیشفرض
در مثال زیر با نحوه استفاده از پارامتر با مقدار پیشفرض آشنا خواهید شد.
اگر تابع را بدون آرگومان فراخوانی کنیم، از مقدار پیشفرض تعیین شده برای آن استفاده خواهد کرد.
دادن یک لیست به تابع به عنوان آرگومان
میتوان هر نوع دادهای از آرگومان (رشته، عدد، لیست، دیکشنری و ...) را به یک تابع داد و داخل تابع با آن به صورت همان نوع داده رفتار خواهد شد.
به عنوان مثال اگر یک لیست از آرگومانها را به تابع بدهید، در هنگام رسیدن به تابع همچنان یک لیست خواهد بود.
دستور return
برای اینکه یک تابع بتواند مقداری را برگرداند، از دستور return
استفاده میکنیم.
دستور pass
زمانی که یک تابع را تعریف میکنیم، آن تابع نمیتواند خالی باشد. اما اگر به هر دلیلی تابعی را تعریف کردیم که هیچ محتوایی نداشته باشد، برای جلوگیری از بروز خطا عبارت pass
را به آن اضافه کنید.
def myfunction():
pass
توابع بازگشتی
پایتون توابع بازگشتی را هم قبول میکند. به این معنی که یک تابع تعریف شده میتواند خود را فرا بخواند.
توابع بازگشتی در ریاضیات و برنامهنویسی رایج هستند. یعنی توابع میتوانند خود را فرا بخوانند. مزیت آن در این است که میتوان روی داده حلقه ایجاد کرد تا به نتیجه برسیم.
برنامهنویس باید در مورد توابع بازگشتی بسیار مراقب باشد. زیرا ممکن است تابعی ایجاد کند که هرگز متوقف نشود یا مقدار بسیار زیادی از حافظه و قدرت پردازنده را مصرف کند. با این حال اگر به درستی نوشته شود، تابع بازگشتی در برنامهنویسی میتواند یک رویکرد بسیار سودمند و به لحاظ ریاضی زیرکانه باشد.
در مثال زیر، تابع tri_recursion()
را طوری تعریف کردهایم که خود را فرا بخواند. از متغیر k
به عنوان داده استفاده کردهایم که در هر مرحله یک واحد از آن کم میشود. بازگشت زمانی پایان مییابد که k
بزرگتر از صفر نباشد (به این معنی که صفر باشد).
برای یک برنامهنویس تازه کار ممکن است اندکی طول بکشد تا به خوبی از نحوه عملکرد توابع بازگشتی درک درستی پیدا کند. بهترین راه برای درک بهتر تست کردن و دستکاری آن است.