تابع چیست؟
به صورت خلاصه، تابع قطعه کدی است که فقط موقع صدا زدن یا call کردن اجرا میشود و بدون صدا زدن خروجی ندارد.
تابع در برنامهنویسی به این معناست که شما یک بلوک کدی را یک بار مینویسید و بعد از آن هرکجا که خواستید آن تابع را صدا میزنید. اما تا این جا این مفهوم شبیه به متغیر بوده که یک بار به آن مقدار میدهیم و بعد صدایش میزنیم. اما خب چرا تابع؟ ابتدا مطلبی که قبلا در مورد حلقه while نوشتیم را در نظر بگیرید.
فرض کنید برنامهای داریم که چندین جای مختلف میخواهیم کاری که در حلقه while گفتیم را انجام دهیم. آیا منطقی است که مثلا صد بار بیاییم این بلوک کد را بنویسیم؟ اگر منطقی است، آنوقت فرض کنید که میخواهیم بخشی از این کد را تغییر بدهیم. آنوقت باید هر صد جا را ادیت کنیم؟ اگر این حلقه را در فایلهای دیگر هم به کار برده باشیم چطور؟ طبیعتا این کار منطقی نیست.
در واقع در توابع، برنامهنویسی راحتتر میشود که یک بار یک تابع مینویسیم و بعد هرکجا خواستیم صدایش میزنیم.
سینتکس ایجاد تابع در پایتون به این صورت است که با کلیدواژه def آن را معرفی میکنیم.
برای معرفی توابع یا فراخوانی آنها حتما باید پرانتز باز و بسته بعد اسمش بیاوریم.
همان حلقه while را در نظر بگیرید.
این حلقه قابلیت اجرای دوباره در جای دیگری ندارد و باید دوباره نوشته شود. اما اگر آن را درون یک تابع تعریف کنیم دیگر نیازی به نوشتن این همه کد نیست.
به این صورت این حلقه را وارد تابع میکنیم:
و حالا برای اینکه این تابع را صدا بزنیم به این فرمت در هر کجا که خواستیم صدایش میزنیم:
و تکه کد ما اجرا میشود.
آرگومان (argument) چیست؟
آرگومان یا argument، اطلاعات و دیتایی است که داخل پرانتز جلوی نام تابع وارد میشود.
حتی میتوانیم یک تابع یا فانکشن را کمی پیشرفتهتر کنیم و آرگومان یا argument به تابع بدهیم. با این کار، تابع ما کمی پویاتر و پیشرفتهتر میشود.
سینتکس یک تابع با آرگومان و صدا زدن آن به این صورت میباشد:
مثال زیر را در نظر بگیرید:
پارامتر (parameter) چیست؟
پارامتر
حالا ما آرگومانی به نام name در تابع خود داریم که هر موقع که داریم تابع را صدا میزنیم باید پارامتر (parameter) بدهیم.
صدا زدن یک تابع که آرگومان دارد و پارامتر میگیرد به این صورت میباشد:
و خروجی نیز به این صورت میباشد:
تفاوت پارامتر و آرگومان چیست؟
در این مطلب به صورت کاملتری به این موضوع پرداخته شده که بعد از نگارش این مطلب نوشته شده اما به صورت خلاصه تفاوت پارامتر و آرگومان را توضیح میدهیم.
آرگومان در هنگام ایجاد تابع به وجود میآید و دیتایی هست که داخل پرانتز و جلوی نام وارد میشود. پارامتر نیز دیتایی هست که موقع صدا زدن تابع به آن میدهیم تا تابع از آن استفاده کند.
تعداد آرگومان در یک تابع
شما محدودیتی در قرار دادن تعداد آرگومان در یک تابع ندارید، اما موقعی که دارید پارامتری را وارد میکنید باید پارامترها به همان تعداد آرگومانها باشد.
مثلا اگر تابع شما دو آرگومان دارد باید دو پارامتر بگیرد، و اگر کمتر یا بیشتر باشد خطا میگیرید. آرگومانها و پارامترها با کاراکتر کاما (,) از یکدیگر جدا میشوند.
و این فرمت و ساختار صحیح میباشد. اگر پارامتری کمتر یا حتی بیشتر از تعداد آرگومانها باشد، مفسر پایتون خطا بر میگرداند.
متن خطا:
Traceback (most recent call last):
File "/var/www/html/new.py", line 5, in <module>
func1('hi')
TypeError: func1() missing 1 required positional argument: 'arg2'
همانطور که در خط آخر میبینید مفسر به صورت واضح بیان میکند که یک آرگومان کم دارد.
حالا اگر تابع را با پارامتر بیشتر صدا بزنیم این خطا را بر میگرداند:
Traceback (most recent call last):
File "/var/www/html/new.py", line 5, in <module>
func1('hi', 'bye', 'ok')
TypeError: func1() takes 2 positional arguments but 3 were given
آرگومانهای arbitrary یا اختیاری (*args)
گاهی اوقات ممکن است بخواهیم یک آرگومان به تابع بدهیم اما ندانیم که چند پارامتر قرار هست تابع دریافت کند. برای همین یک * قبل آرگومان میگذاریم و به پایتون میگوییم که هر تعداد ورودی را قبول کند.
این مثال را در نظر بگیرید:
خروجی:
نکته مهم: نکتهای که اینجا حائز اهمیت میباشد این است که پارامترهایی که به به این صورت داده میشوند، به صورت پیشفرض یک تاپل (tuple) هستند و میتوانید به ایندکس خاصی دسترسی پیدا کنید و یا حتی این تاپل را به لیست تبدیل کنید.
خروجی:
مقداردهی پیشفرض پارامتر
برخی اوقات نیز ممکن است بخواهید تابع شما به صورت پیشفرض یک مقدار داشته باشد و حتما نیازی نباشد که موقع صدا زدن، مقداردهی شود. برای این کار کافی است مقدار پیشفرض را داخل پرانتز جلوی تابع بنویسیم.
مثال زیر را در نظر بگیرید:
خروجی:
استفاده از یک متغیر دیگر به عنوان پارامتر تابع
در هنگام مقداردهی به پارامتر حتی میتوانید نام یک متغیر دیگر را داخل پرانتز وارد کنید. مثال زیر را در نظر بگیرید:
def countries(names):
for name in names:
print(name)
country_names = ['Iran', 'USA', 'Germany', 'UK']
countries(country_names)
خروجی:
عبارت pass یا pass statement
عبارت یا لغت کلیدی pass جزو کلیدواژههای رزرو شده در پایتون میباشد و به این معناست که هرکجا مفسر پایتون این لغت را دید آن کد یا بلوک را اجرا نمیکند و برنامه را ادامه میدهد.
همانطور که میدانید هیچ تابعی نمیتواند مقدار خالی داشته باشد. حالا برای اینکه تابع زیر نخواهیم مقدار خاصی برگرداند عبارت pass را وارد میکنیم.
def countries(names=''):
if names == 'USA':
pass
else:
print('Iran')
countries()
countries('USA')
خروجی:
- python function
- تابع پایتون
- فانکشن پایتون
- آرگومان تابع پایتون
- argument تابع پایتون
- python function argument
- پارامتر تابع پایتون
- parameter تابع پایتون
- python function parameter
- عبارت pass پایتون
- python pass statement
نظرات
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.