با سری ششم از آموزش زبان پایتون در سایت چیاب همراه شما خواهیم بود. در این سری از آموزش با یکی از امکانات پایتون به نام function آشنا خواهید شد. میتوانید سرفصل این دورهی آموزشی را در پست “محبوب مثل پایتون!” مشاهده کنید.
به طور کلی function به توابع میگویند که شامل یک بلاک از کدهایی با قابلیت استفاده ی مجدد هستند؛ این توابع ممکن است یک و یا چندبار در کد استفاده شوند و بهتراست این توابع به صورتی تعریف شوند که قابلیت استفاده ی بالایی داشته باشند.
Print() که پیش تر با آن آشنا شده اید یک تابع است. built-in functions به توابعی میگویند که به صورت پیشفرض در ساختار زبان تعبیه شدهاند و قابل استفاده میباشند. کاربر نیز میتواند توابع مورد نیاز خود را تعریف کند؛ در این آموزش با user-defined function یا همان توابعی که کاربر تعریف میکند آشنا خواهیدشد.
-
تعریف تابع FUNCTION
سینتکس یا همان قواعد تعریف تابع به صورت زیر است:
def functionname( parameters ): "function_docstring" function_suite return [expression]
*رشتهای شامل توضیحات تابع و کاری که انجام میدهد “function_docstring”
-
فراخوانی تابع call
هرتابعی که تعریف میشود برای این است که در کد استفاده شود بدین صورت که ممکن است یک یا چندبار در کد اصلی برنامه نیاز به فراخوانی تابع داشته باشید به مثال زیر(تعریف تابع و فراخوانی آن) دقت کنید:
def print_new( str ): "This prints a passed string into this function" print (str) return; # call print_new print_new("first call to function!") print_new("second call to function")
نتیجه ی کد بالا در عکس ذیل مشهود است.
-
تفاوت پاس دادن با مقداریا منبع Pass by reference vs value
در زبان پایتون تمام متغیرها به صورت pass by refrence برای توابع فرستاده میشوند؛ یعنی به این صورت که متغیر قبل از فرخوانی مقدار دارد و در تابع مقدار آن دستخوش تغییر میشود و سپس هنگامی که اجرای تابع تمام شد و به محل اصلی (محل فراخوانی تابع) بازگشت متغیر دارای مقدار جدید است و مقدار قبلی آن دستخوش تغییر شده است، برای فهم بهتر این موضوع به مثال زیر و نتیجهی آن توجه نمایید.
# Function definition def change( mylist ): "This changes a passed list into this function" mylist.append([4,5]); print ("Values inside the function: ", mylist) return # Now you can call change function mylist = [1,2,3]; print ("Values outside the function_before call: ", mylist) change( mylist ); print ("Values outside the function_after call: ", mylist)
به مثالی دیگر در این باب توجه کنید.
# Function definition is here def changeme( mylist ): "This changes a passed list into this function" mylist = [1,2,3,4]; print ("Values inside the function: ", mylist) return # Now you can call changeme function mylist = [10,20,30]; changeme( mylist ); print ("Values outside the function: ", mylist)
در مثال بالا چون متغیر mylist درون تابع دوباره تعریف شده است پس در تابع به صورت متغیر محلی عمل میکند؛ یعنی نمیتوان به طور کلی محتوای یک متغیر را درون تابع عوض کرد زیرا باعث میشود متغیر به صورت محلی تلقی شود و مقدار آن در قسمت اصلی کد و جایی که تابع فراخوانی شده، تغییر نکند.
-
انواع argumentهای قابل استفاده در فراخوانی تابع
- Required arguments
- Keyword arguments
- Default arguments
- Variable-length arguments
-
Required arguments
این نوع از پارامتردهی همانند مثالهای بالاست؛ یعنی درست به تعداد آرگومانهایی که هنگام تعریف تابع درنظر گرفته شده، باید هنگام فرخوانی برای تابع آرگومان فرستاد. به مثال ذیل و نتیجهی آن توجه کنید.
# Function definition is here def printme( str ): "This prints a passed string into this function" print (str) return; # Now you can call printme function printme()
-
Keyword arguments
در این حالت که مربوط به فراخوانی تابع است نام آرگومان تابع عینا ذکر میشود، در نتیجه میتوان به آرگومان هرمقداری داد. در این حالت ترتیب آرگومانها تفاوتی ایجاد نمیکند. مثال زیر به درک بهتر این موضوع کمک میکند.
# Function definition is here def printinfo( name, domain ): "This prints a passed info into this function" print (name , '.' , domain) return; # Now you can call printinfo function printinfo( name="Cheyab" , domain = "ir")
-
Default arguments
این نوع آرگومانها به صورت پیشفرض یک مقدار مشخص دارند؛ تا در حالتی که آن آرگومان در فراخوانی مقدار نگرفت، از آن مقدار پیشفرض استفاده کنند. مثال زیر گویای این موضوع است:
# Function definition is here def printinfo( name, domain='ir' ): "This prints a passed info into this function" print (name , '.' , domain) return; # Now you can call printinfo function printinfo( name="Cheyab" , domain = "com") printinfo( name="Cheyab")
-
Variable-length arguments
ممکن است در زمان اجرای برنامه نیاز شود که چند آرگومان بیشتر به تابعی که تعریف شده قرستاده شود در این حالت بهتر است از آرگومانهای Variable-length استفاده کنید. این آرگومانها دقیقا نقطهی مقابل آرگومانهای required و default هستند یعنی به تعداد دلخواه میتوان برای تابع فرستاد. برای درک بهتر به مثال زیر ونتیجهی آن توجه کنید.
*علامت * که قبل از vartuple در تعریف تابع آمده است نشانی بر همین موضوع میباشد.
# Function definition def printinfo( arg1, *vartuple ): "This prints a variable passed arguments" print ("Output is: ") print (arg1) for var in vartuple: print (var) return; # Now you can call printinfo function printinfo( 10 ) printinfo( "che", "yab" , "ir" )
-
Return statement
اگر دقت کرده باشید در تعریف تابع قسمتی به نام return وجود دارد؛ این دستور میتواند یک مقدار از تابع محلی را به کد اصلی یا همان جایی که فراخوانی شده بازگرداند و اگر جلوی آن نام متغیر و یا مقداری قرار نگیرد، چیز را برنمیگرداند. به مثال زیر توجه کنید.
# Function definition is here def sum( arg1, arg2 ): # Add both the parameters and return them." total = arg1 + arg2 print ("Inside the function : ", total) return total; # Now you can call sum function total = sum( 10, 20 ); print ("Outside the function : ", total )
برای تمرین موارد بالا میتوانید سوال زیر را به صورت کد زبان پایتون پیاده سازی کنید.
سوال :
برنامه ای بنویسید که ۵ عدد از کاربر بگیرد و سپس موارد زیر را نمایش دهد :
- ۲ عدد بزرگتر را با هم جمع کند.
- بزرگترین عدد را منهای کوچکترین عدد کند.
- اعداد را به ترتیب صعودی نمایش دهد.
- اگر تعداد اعداد زوج در بین ۵ عدد بیشتر بود آنگاه بزرگترین عدد را با ۵ جمع کند درغیر اینصورت بزرگترین عدد را با کوچکترین عدد جمع کند.
*برنامه ی نوشته شده باید حداقل دارای ۴ تابع برای ۴ مورد بالا باشد.
سری ششتم آموزش زبان پایتون به اتمام رسید؛ اگر سوال، نظر و یا پیشنهادی دارید در قسمت نظرات با ما در میان بگذارید. در قسمت های بعدی آموزش زبان پایتون به حل و توضیح این تمرین خواهیم پرداخت. با ما همراه باشید.
راستی!
جهت اطلاع از آخرین اخبار و آموزش های ما میتوانید در کانال تلگرام چ یاب عضو شوید.
ارسال پاسخ
نمایش دیدگاه ها