توابع پایتون: فراخوانی ، تورفتگی ، آرگومان ها و مقادیر بازگشتی
توابع در پایتون برای استفاده کد در بیش از یک مکان در برنامه استفاده می شود که گاهی به آن متد یا پروسیجر گفته می شود. پایتون بسیاری از توابع داخلی مانند ()print را در اختیارتان می گذارد ، اما می توانید توابع مورد نیاز خود را نیز ایجاد کنید.
در این آموزش یاد خواهیم گرفت:
- نحوه تعریف و فراخوانی تابع در پایتون
- اهمیت تورفتگی (فاصله) در پایتون
- مقدار بازگشتی تابع چگونه است؟
- آرگومان ها در توابع
نحوه تعریف و فراخوانی تابع در پایتون
تابع در پایتون با عبارت “def” تعریف شده و به دنبال آن نام تابع و پرانتز (()) .
مثال:
با استفاده از دستور “()def function1” یک تابع را تعریف و فراخوانی می کنیم. خروجی این تابع “I am learning Python function” خواهد بود.
print func1 ()، func1()
را فرا می خواند و دستور را چاپ می کند ” I am learning Python function “.
مجموعه ای از قوانین برای تعریف یک تابع در پایتون وجود دارد.
- هر پارامتر یا آرگومان ورودی باید درون پرانتز قرار گیرد.
- اولین دستور تابع می تواند یک دستور اختیاری باشد.
- کد در هر تابع با (:) شروع می شود و باید تو رفتگی داشته باشند.
- بیانیه (عبارت) return تابع را پایان می دهد، و به صورت اختیاری یک مقدار را به فراخواننده بر می گرداند. دستور return بدون آرگومان همان None return است.
اهمیت تورفتگی (فاصله) در پایتون
قبل از اینکه با توابع پایتون آشنا شویم ، مهم است که قانون تورفتگی را برای تعریف توابع پایتون بفهمیم و این قوانین برای سایر عناصر پایتون و همچنین مانند تعریف شرط ، حلقه ها یا متغیر قابل اجرا است.
پایتون برای تعریف کد از سبک خاصی برای تورفتگی پیروی می کند ، از آنجا که توابع پایتون هیچگونه شروع یا پایان صریح مانند {} برای نشان دادن شروع و پایان تابع ندارند ، از تورفتگی استفاده می شود. در اینجا یک مثال ساده با دستور “print” بیان می کنیم. هنگامی که تابع “print” را درست در زیر :()def func1 می نویسیم: ” خطای تورفتگی را نشان می دهد: انتظار یک بلوک تو رفتگی دارد “.
حال ، هنگامی که تو رفتگی (فاصله) را مقابل تابع “print” اضافه می کنید ، برنامه بدون خطا اجرا می شود.
حداقل ، یک فاصله برای اجرای با موفقیت کد کافی است. اما به عنوان بهترین روش ، توصیه می شود حدود ۳-۴ تا فاصله بگذارید تا تابع را فراخوانی کند.
همچنین لازم است که ضمن ایجاد تورفتگی ، بقیه کد خود را هم با همان تو رفتگی بنویسید. به عنوان مثال ، در تصویر زیر هنگامی که دستور دیگری را اضافه می کنیم”هنوز در func1″ و درست زیر اولین دستور print آن را ننویسیم، خطای تورفتگی نشان می دهد ” تورفتگی با دیگر تو رفتگی ها مطابقت ندارد.”
حال ، هنگامی که برای هر دو دستور، توافقی را اعمال می کنیم و آن ها را در یک خط تراز می کنیم، نتیجه مورد انتظار را می دهد.
مقدار بازگشتی تابع چگونه است؟
دستور Return در پایتون مشخص می کند که چه مقدار بازگشتی به فراخواننده تابع استفاده شود.
بیایید این را با مثال زیر درک کنیم:
مرحله ۱) در اینجا – تابع “بازگشتی” نیست. به عنوان مثال ، ما توان دو ۴ را می خواهیم و هنگام اجرای کد باید جواب “۱۶” بدهد. هنگامی که به سادگی از کد “print x * x” استفاده می کنیم، نتیجه را می بینیم اما وقتی تابع
” print (square(4))”
را فرا می خوانید، خروجی “Nope” می دهد. زیرا وقتی تابع را صدا می کنید ، بازگشت اتفاق نمی افتد و از انتهای تابع بر نمی گردد. پایتون به دلیل عدم موفقیت در به پایان رساندن تابع “Nope” برمی گرداند.
مرحله ۲) برای روشن تر شدن این موضوع ، دستور print را با دستور انتساب جایگزین می کنیم. بیایید خروجی را بررسی کنیم.
هنگامی که دستور ” (print square (4″ را اجرا می کنید ، در واقع مقدار شی را برمی گرداند ، زیرا هیچ تابع خاصی برای اجرا نداریم ، “Nope” برمی گرداند.
مرحله ۳) اکنون ، خواهیم دید که چگونه با استفاده از دستور “Return” خروجی را بازیابی کنیم. وقتی از تابع “Return” استفاده می کنید و کد را اجرا می کنید ، خروجی “۱۶” را می دهد.
مرحله ۴) توابع در پایتون خود یک شیء هستند و یک شی مقدار دارد. در اینجا خواهیم دید که چگونه پایتون با شی برخورد می کند. هنگامی که دستور ” print square” را اجرا می کنید ، مقدار شی را برمی گرداند. از آنجا که هیچ آرگومانی ارسال نکرده ایم ، هیچ کارکرد خاصی هم برای اجرا نداریم پس مقدار پیش فرض (۰x021B2D30) را که محل شیء است ، برمی گرداند. در برنامه عملی پایتون ، احتمالاً دیگر نیازی به انجام این کار نخواهید داشت.
آرگومان ها در توابع
آرگومان مقداری است که هنگام فراخوانی تابع به آن ارسال می شود. به عبارت دیگر از طرف فراخوانی ، یک آرگومان است و در طرف تابع یک پارامتر است. بگذارید ببینیم که آرگومان پایتون چگونه کار می کند –
مرحله ۱) آرگومان ها در تعریف تابع اعلام می شوند. هنگام فراخوانی تابع ، می توانید مقادیر آرگومان را همانطور که در شکل زیر نشان داده شده است ، ارسال کنید.
مرحله ۲) برای مشخص کردن مقدار پیش فرض آرگومان ، مقدار را در تعریف تابع به آن اختصاص دهید.
مثال: x مقدار پیش فرض ندارد اما y مقدار پیش فرض ۰ دارد. زمانی که تابع را با یک آرگومان صدا می زنیم، پایتون آرگومان را به x اختصاص می دهد و y=0 است. در نتیجه x*y=0 می شود.
مرحله ی ۳) در این مرحله به جای مقدار پیش فرض ۰ مقدار ۲ را به y اختصاص می دهیم. خروجی برابر خواهد بود با : ۴*۲=۸ .
مرحله ی ۴) می توان ترتیب ارسال آرگومان به توابع را جا به جا کرد.
مرحله ی ۵) آرگومان های متعدد می توانند به عنوان آرایه ارسال شوند. در اینجا با فراخوانی (args(1,2,3,4,5 تابع (*args) را صدا می زنیم.
مثال: آرگومان های عددی مختلف (۱,۲,۳,۴,۵) را تعریف کرده ایم. زمانی که تابع (*args) را صدا می زنیم، خروجی (۱,۲,۳,۴,۵) چاپ می شود.
نکات:
- در پایتون ۲٫۷ overloading تابع پشتیبانی نمی شود. overloading تابع توانایی ایجاد چندین متد هم نام با اجرای متفاوت است. overloading تابع به طور کامل در پایتون ۳ پشتیبانی می شود.
- بین مفهوم متد ها و توابع پیچیدگی وجود دارد. متد ها در پایتون با شی مرتبطند در حالی که در توابع اینگونه نیست. یک تابع مستقل در پایتون یک “تابع” است ، در حالی که تابعی که یک ویژگی از کلاس یا نمونه است ” متد” است.
کد پایتون ۳
#define a function
def func1():
print (“I am learning Python function”)
print (“still in func1”)
func1()
def square(x):
return x*x
print(square(4))
def multiply(x,y=0):
print(“value of x=”,x)
print(“value of y=”,y)
return x*y
print(multiply(y=2,x=4))
کد پایتون ۲
#define a function
def func1():
print ” I am learning Python function”
print ” still in func1″
func1()
def square(x):
return x*x
print square(4)
def multiply(x,y=0):
print”value of x=”,x
print”value of y=”,y
return x*y
print multiply(y=2,x=4)
خلاصه
توابع در پایتون برای استفاده از کد در بیش از یک مکان در برنامه استفاده می شود.
- تابع توسط عبارت def تعریف می شود.
- بلوک کد در هر تابع با (:)شروع می شود و باید تو رفتگی داشته باشد.
- هر آرگومان یا پارامتر ورودی باید داخل پرانتزها قرار بگیرد.
- حداقل یک فاصله بعد از تعریف تابع برای نوشتن کد باید ایجاد کنیم.
- سبک تورفتگی باید در تابع حفظ شود.
- بهترین روش این است که سه یا چهار فاصله قبل از دستورات در نظر گرفته شود.
- می توانید از دستور “Return” برای بازگشت مقادیر به فراخواننده استفاده کنید.
- هنگامی که آرگومان به تابع فراخوان ارسال نشده باشد ، پایتون مقدار تصادفی مانند (۰x021B2D30) را چاپ می کند. به عنوان مثال “print function “
- آرگومان در طرف فراخوانی ، یک آرگومان است و در طرف تابع یک پارامتر.
- مقدار پیش فرض در آرگومان – هنگامی که در حین فراخوانی تابع ضرب یا هر تابع دیگر، فقط یک آرگومان ارسال می کنیم، پایتون به آرگومان دیگر بطور پیش فرض مقدار اختصاص می دهد.
- پایتون شما را قادر می سازد ترتیب ارسال آرگومان را معکوس کنید.
سلام جناب حيدري عزيز
پاسخارجاع دادن به يك بخش از يك ليست در پايتون چجوري انجام ميشه؟ مثلا يك ليست يا يك ماترس شامل تعدادي زير ليست يا زير ماتريس است حال ميخواهيم با دادن انديس هايي به هر يك در ابتدا آنها را در حافظه داشته و سپس فراخواني كنيم. در متلب با {} انجام ميشه. مثلا براي {i}data و دادن عدد به انديس i مجمموعه هاي 1 تا n را فراخواني مي كنيم.
ممنون