توابع
تا کنون، ما تمام کدهای خود را در app.py مینوشتیم، اما با رشد برنامههایمان، به روش بهتری برای سازماندهی کد خود نیاز داریم. ما باید کد خود را به تکه های کوچکتر، قابل مدیریت تر و قابل نگهداری تر تقسیم کنیم که آنها را توابع می نامیم. تابع محفظه ای برای چند خط کد است که وظیفه خاصی را انجام می دهد.
به عنوان مثال، شما قبلاً در مورد چند توابع داخلی در پایتون یاد گرفته اید print()
و input()
. هر تابع هدفی دارد و می داند که چگونه یک کار خاص را انجام دهد. بنابراین، هنگامی که ما برنامه های پیچیده بزرگ می سازیم، باید کد خود را به تکه های کوچکتر قابل استفاده مجدد تقسیم کنیم، یعنی توابع.
اجازه دهید با ساختن برنامه ای برای چاپ پیام تبریک این مفهوم را درک کنیم.
print('Hi there!')
print('Welcome aboard!')
در اینجا ما یک برنامه ساده با تنها دو خط کد داریم. حال، فرض کنید، ما به آنها در برنامه های دیگر نیاز داریم تا آنها را در تابعی قرار دهیم که بتوانیم دوباره از آن استفاده کنیم.
اجازه دهید یک کلمه کلیدی رزرو شده را معرفی کنم def
در پایتون که مخفف تعریف است و برای تعریف تابع استفاده می شود.
def greet_user():
print('Hi there!')
print('Welcome aboard!')
حالا این بلوک کد تابعی را تعریف می کند.greet_user
” با خطوط کدهای بعد از آن. هر زمان که این تابع فراخوانی شود، این دو خط اجرا می شوند. بیایید از این استفاده کنیم:
print('start')
greet_user()
print('finish')
برنامه به صورت متوالی اجرا می شود، به این معنی که شما باید یک تابع را قبل از فراخوانی آن در برنامه تعریف کنید.
پارامترهای
توابع تعریف شده کمی متفاوت از توابع داخلی پایتون کار می کنند. به عنوان مثال، در مورد print()
یک تابع، اطلاعاتی را میگیرد که میخواهیم چاپ کنیم، اما تابع سلام ما هیچ اطلاعاتی را دریافت نمیکند. آیا بهتر نیست اگر بتوانید نام کاربر را اینجا بفرستید و سپس به جای گفتن "سلام" نام کاربر را چاپ کنید؟
می توانید این کار را با اضافه کردن پارامترهای داخل پرانتز تابع تعریف شده انجام دهید. بگذار نشانت دهم:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
در حال حاضر "name
” داخل پرانتز مانند یک متغیر محلی عمل می کند و می توانیم نام کاربر را هنگام فراخوانی ارسال کنیم.
greet_user('Shahbaz')
اکنون پارامتر نام روی ” تنظیم شده استShahbaz
". بیایید برنامه را تغییر دهیم تا از آن استفاده کنیم.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
نکته مهمی که باید به آن توجه داشت این است که "نام" در خط اول یک پارامتر نامیده می شود در حالی که نام ارائه شده یعنی شهباز آرگومان نامیده می شود.
بیایید جلو برویم و این برنامه را اجرا کنیم.
بنابراین با این پارامترها می توانیم اطلاعاتی را در توابع خود دریافت کنیم.
حالا بیایید یک کار جالب انجام دهیم. فرض کنید می خواهید نام دیگری به پیام تبریک اضافه کنید. ساده است.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
حال توجه داشته باشید که وقتی یک تابع دارای پارامتر است، ما موظف هستیم که یک مقدار برای آن پارامتر ارسال کنیم. اگر نام را از تابع حذف کنید و برنامه را اجرا کنید، با خطا مواجه می شویم. همچنین می توانید از چندین پارامتر در یک تابع استفاده کنید که با کاما از هم جدا شده اند.
به عنوان مثال، greet_user(first_name, last_name):
. آرگومان ها نیز به همین ترتیب قالب بندی خواهند شد.
آرگومان های کلیدواژه
تا اینجا، ما یاد گرفتیم که هر زمان که پارامترهایی را برای توابع خود تعریف می کنیم، همیشه باید مقادیری را ارائه کنیم، در غیر این صورت با خطا مواجه می شویم. در آخرین برنامه، استدلال ها 'Shahbaz'
و 'Bhatti'
آرگومان های موقعیتی نامیده می شوند، به این معنی که موقعیت یا ترتیب آنها در برنامه اهمیت دارد.
در پایتون نوع دیگری از آرگومان به نام آرگومان های کلیدواژه داریم که موقعیت برای آن مهم نیست. بگذارید به شما نشان دهم که چگونه کار می کنند.
به برنامه آخر نگاه کنید. ما می توانیم آن را به این صورت تغییر دهیم:
def greet_user(first_name, last_name):
print(f'Hi {first_name} {last_name}')
print('Welcome aboard!')
print('start')
greet_user(first_name='Shahbaz', last_name='Bhatti')
print('finish')
در حال حاضر first_name
و last_name
پارامترهای کلمه کلیدی هستند. می توانید جای آنها را عوض کنید و نتیجه یکسان خواهد بود.
حالا این بدان معنا نیست که ما همیشه باید از آرگومان های کلمه کلیدی استفاده کنیم. بیشتر اوقات ما از آرگومان های موقعیتی استفاده می کنیم، اما در شرایط خاص، این آرگومان های کلیدواژه به ما کمک می کنند تا خوانایی کدمان را بهبود ببخشیم.
یک چیز دیگر وجود دارد که باید در مورد آرگومان های کلیدواژه بدانید. آرگومان های کلیدواژه همیشه باید بعد از آرگومان های موقعیتی بیایند.
بیانیه بازگشت
تاکنون یاد گرفتهایم که چگونه توابع ایجاد کرده و با استفاده از پارامترهای آنها اطلاعات ارسال کنیم. حالا بیایید یاد بگیریم که چگونه توابعی ایجاد کنیم که مقادیر را برمی گرداند. این به ویژه در صورتی مفید است که در حال انجام نوعی محاسبات هستید و می خواهید نتیجه را به هر کسی که از تابع شما استفاده می کند برگردانید. بگذار نشانت دهم.
بیایید تابعی را تعریف کنیم که مجذور یک عدد را محاسبه کند.
def square(number):
return number*number
ما از دستور return برای برگرداندن این عدد در خارج از تابع استفاده کرده ایم. حال، اگر این تابع را فراخوانی کنیم، مقداری مانند تابع را برمی گرداند input()
عملکرد. بیایید آن را روی ترمینال چاپ کنیم.
شما می توانید استدلال کنید که همان نتیجه را می توان بدون استفاده از دستور بازگشت به دست آورد. بگذار چک کنیم.
ما دو چیز را می بینیم، عدد 9 و هیچ. اینجا چه خبر است؟
وقتی مفسر پایتون این کد را اجرا می کند، ابتدا تابع مربع را فراخوانی می کند و کنترل به تابع منتقل می شود. در اینجا مربع این عدد داده شده را محاسبه می کنیم و سپس آن را در ترمینال چاپ می کنیم.
اکنون، به طور پیش فرض، همه توابع مقدار none را برمی گردانند. بنابراین اگر در اینجا دستور بازگشتی نداشته باشیم، به طور پیشفرض پایتون هیچ کدام را برنمیگرداند. هیچ یک شی نیست که نشان دهنده عدم وجود یک مقدار باشد. در C، C++، جاوا و جاوا اسکریپت مانند هیچ یا null است.
بسته شدن!
امیدوارم اهمیت توابع را درک کرده باشید.
اگر قصد دارید در طول حرفه برنامه نویسی خود برنامه های بزرگ و پیچیده بنویسید، آنها جنبه مهمی از یادگیری پایتون هستند.
پاسخ دهید