تعریف تابع در پایتون
یک تابع تکه کدی است که فقط موقع فراخوانی اجرا میشود. شما میتوانید داده ها را به عنوان پارامتر به تابع انتقال دهید. همچنین موقع تعریف تابع در پایتون تابع را طوری تعریف کنید که تابع یک خروجی داشته باشد.
تعریف توابع در پایتون
توابع در پایتون با استفاده از کلمهی کلیدی def تعریف میشوند.به مثال زیر دقت نمائید:
>>> def my_func():
... print("hello from a function")
مثل بقیهی جاها باید در تعریف تابع در پایتون باید تو رفتگی ها را رعایت نمائید مثلا اگر تابعی که در مثال بالا تعریف شد به صورت زیر تعریف میکردیم مفسر پایتون یک خطای نحوی نشان میداد:
>>> def my_func():
... print("hello from a function")
فراخوانی تابع
جهت فرخوانی یک تابع در پایتون کافی است نام آنر را بنویسید و اگر آرگومانی هست نام آنها را جلوی نام تابع در داخل پارانتز قراردهدی اگر آرگومانی نیست پارانتزها را خالی بگذارید.در مثال زیر یک تابع را تعریف و فراخوانی کرده ایم.
def my_function():
... print('hello from a function')
...
>>> my_function()
hello from a function
آرگومانهای تابع در پایتون
دادههای مورد نیاز در داخل تابع میتواند با استفاده از آرگومانها به تابع فرستاده شود.آرگومانها موقع تعریف تابع جلوی نام تابع و در داخل پارانتز نوشته میشود. اگر تعداد ارگومانها بیش از یک مورد باشد با کاما “,” از همدیگر جدا میشوند. وقتی تابع فراخوانی میشود باید دادههای متناظر با ارگومانهای مورد نظر جلوی نام تابع بیایید.
در مثال زیر تابع فقط یک آرگومان دارد و آرگومان مورد نطر را چاپ میکند.
>>> def my_function(fname):
... print(fname + "Refsnes")
...
>>> my_function('amir')
amirRefsnes
پارامترها یا آرگومانها؟ مساله این است
آرگومان و پارامتراکثرا به جای همدیگر استفاده میشود.
اما بهتر است به موارد زیر دقت کنید که آنها را در جای مناسب به درستی استفاده نمائید:
پارامتر به لیستی از متغیر های داخل پارانتز جلوی تابع در تعریف تابع گفته میشود.
آرگومان به لیستی از مقادیر داخل پارانتز جلوی نام تابع در فراخوانی تابع گفته میشود.
تعداد آرگومانهای توابع در پایتون
در حالت طبیعی تعداد آرگومانهای یک تابع هنگام فراخوانی باید با تعد پارامترهای آن در تعریف تابع برابر باشد. این به این معنی است که اگر در تعریف تابع دوتا پارامتر برای تعریف تابع در نظر گرفتهاید حتما باید دو تا آرگومان در فراخوانی باید به آن تابع ارسال گردد. مثال زیر را ببینید:
>>> def print_fulname(fname, lname):
... print(fname + " " + lname)
...
>>> print_fulname('amir', 'hassanzadeh')
amir hassanzadeh
اگر تعداد آرگومانها کم و زیاد شود مفسر پایتون یک خطای نحوی ایجاد میکند. در مثال زیر تابع print_fulname را فقط با یک آرگومان فرخوانی کرده ایم.
>>> print_fulname('amir')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: print_fulname() missing 1 required positional argument: 'lname'
آرگومانهای دلخواه
وقتی تابع تعریف میکنید اگر از تعداد آرگومانهای ورودی تابع در پایتون مطمئن نیستید کافی است قبل از نام پارامتر کاراکتر * را اضافه نمائید. با این کار پایتون آرگومان ورودی را به عنوان یک چندتایی در نظر میگیره و در بلوک تابع میتوانید با استفاده از اندیس به هر یک از آرگومانها دسترسی داشته باشید.
اگر تعداد آرگومانهای تابع مشخص نباشد کافیست یک * قبل از نام پارامتر آن بگذارید.
>>> def my_function(*kids):
... print("The youngest child is " + kids[2])
...
>>> my_function('Emil', 'Tobias', 'linus')
The youngest child is linus
کلمات کلیدی در آرگومان (Keyword Arguments)
همچنین شمامی توانید آرگومانها را به صورت key=value استفاده نمائید.در این صورت دیگر نیازی به ارسال آرگومان ها به صورت مرتب نیست و میتوانید جای آرگومانها را موقع فراخوانی خودتان تنظیم نمائید.
>>> def my_function(child3, child2,child1):
... print('The youngest child is ' + child3)
...
>>> my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
The youngest child is Linus
>>> my_function('amir' , 'mohammad' , 'ali')
The youngest child is amir
در برخی از متون انگلیسی به جای Keyword Arguments از kwargs استفاده میشود.
ارسال آرگومانهای نامشخص به تابع با استفاده از “**”
وقتی میخواهید آرگومانهای تابع را با استفاده از کلمات کلیدی(key=value) به تابع انتقال دهید در تعریف تابع قبل از پارامتر مورد نظر دوتا علامت ستاره “**” استفاده نمائید. در این صورت پایتون ورودیهای شما را به عنوان یک دیکشنری در نظر میگیرد و شما میتوانید مثل یک دیکشنری و با استفاده از کلمهی کلیدی مورد نظر به آرگومان مورد نظر دسترسی داشته باشید.
>>> def my_function(**kid):
... print("His last name is " + kid["lname"])
...
>>> my_function(fname = "Tobias", lname = "Refsnes")
His last name is Refsnes
گاهی اوقات در منابع انگلیسی این روش را به صورت **kwargs نشان میدهند
پارامترهایی که مقدار اولیه دارند
برای مشخص کردن مقدار اولیه یا پیش فرض برای پارامتر توابع در پایتون در تعریف تابع پس از نام پارامتر مورد نظر یک مساوی “=” قراردهید و سپس مقدار مورد نظر را بنویسید.مثال زیر را ببینید:
>>> def myfunction(country="Iran"):
... print("I am from " + country)
...
>>> myfunction()
I am from Iran
>>> myfunction("Sweden")
I am from Sweden
>>> myfunction("India")
I am from India
ارسال یک لیست به عنوان آرگومان به یک تابع در پایتون
هر دادهای() که در پایتون قابل تعریف باشد را میتوانید در پایتون به عنوان آرگومان به یک تابع ارسال نمائید.اگر متغیری را به عنوان ارگومان به تابع ارسال نمائید متغیر مورد نظر نوعش را حفظ میکند و با همان قواعد کلی در پایتون میتوانید به آن دسترسی داشته باشید.
جهت مطالعهی انواع داده ها در پایتون اینجا را ببینید.
>>> def my_function(food):
... for x in food:
... print(x)
...
>>> fruits=['apple', 'banana','cherry']
>>> my_function(fruits)
apple
banana
cherry
مقدار برگشتی تابع در پایتون
برای مشخص کردن مقدار برگشتی یک تابع از کلمهی کلیدی return استفاده میکنیم.
تابع زیر عدد دریافتی را به پنج ضرب میکنند و حاصل را برمیگراند.
>>> def my_function(x):
... return(5*x)
...
>>> print(my_function(3))
۱۵
>>> print(my_function(4))
۲۰
>>> print(my_function(7))
۳۵
دستور pass در پایتون
تعریف تابع بدون دستور در پایتون امکانپذیر نمیباشد. برای تعریف توابع بدون دستور درپایتون کلمهی کلیدی pass تعبیه شده است.
این تابع کار خاصی انجام نمیدهد.
توابع بازگشتی در پایتون
توابع بازگشتی در پایتون قابل تعریف است. این نوع توابع خودشان را فراخوانی میکنند.
توابع بازگشتی یک مفهوم ریاضی و برنامه نویسی است. در این نوع توابع، تابع مورد نظر خود را فراخوانی میکنند. با این کار میتوانید حلقهای را روی داده/دادههای خود ایجاد نمائید.
با توجه به این که در این نوع توابع یک اشتباه کوچک به سادگی باعث می شود یک حلقهی بی نهایت ایجاد گردد و تمام یا بیشتر منابع سیستم را مصرف نماید. لذا باید برنامه نویسها در تعریف این نوع توابع بیش از حد دقت نمایند. در هر صورت اگر توابع بازگشتی در پایتون با دقت و بررسی بیشتر نوشته شوند بسیار قدرتمند عمل خواهند کرد.
توابع بازگشتی در قسمتی از بدنهی خود، خود را فراخوانی میکنند و در قسمتی دیگر دستور دیگری را انجام می دهند که این دستور معمولا return است.
در مثال زیر تابع بازگشتی حاصل جمع اعداد صفر تا آرگومان دریافتی را بر میگرداند. تا وقتی که آرگومان این تابع بزرگتر از یک است این تابع از آرگومان ورودیش یک واحد کم میکند و با همین مقدار خودش را فرامیخواند. وقتی آرگومان آن صفر یا کمتر از صفر است صفر را بر میگرداند که بقیهی اعداد در پشتهی برگشت جمع میشوند.
دقت کنید که دستور print موجود در خط ۴ نیاز نیست و فقط برای مشخص شدن نحوهی فراخوانی این تابع بازگشتی است.
>>> def tri_rec(k):
... if(k > ۰):
... result = k + tri_rec(k -1)
... print(k)
... else:
... result =0
... return result
...
>>> print("\n\nRecursion Example Results")
Recursion Example Results
>>> tri_rec(6)
۱
۳
۶
۱۰
۱۵
۲۱
جهت سفارش پروژه های طراحی وب سایت تبریز و سئو در تبریز با ما تماس بگیرید.