برنامه نویسی

تفاوت بین توابع و روش ها در پایتون.

در این مقاله قصد داریم تفاوت بین آنها را مورد بحث قرار دهیم توابع و روش‌ها در برنامه‌نویسی پایتون، برای داشتن درک روشنی از هر دو.

برای شروع؛

توابع در پایتون چیست؟

یک تابع یک بلوک از کد (یا دستور) است که وظیفه خاصی را انجام می دهد و تنها زمانی اجرا می شود که فراخوانی شود. تابع همچنین یک خط کد است که وظیفه خاصی را انجام می دهد. توابع دارای:

  • نام
  • بحث و جدل
  • بیانیه بازگشت بیانیه بازگشت و آرگومان هر دو اختیاری هستند. یک تابع می تواند آنها را داشته باشد یا نداشته باشد.

به طور عمده سه نوع تابع در پایتون وجود دارد

  1. عملکرد داخلی
  2. عملکرد تعریف شده توسط کاربر
  3. تابع ناشناس

عملکرد داخلی: توابع ساخته شده توابع از پیش تعریف شده در پایتون هستند که می توانند مستقیماً مورد استفاده قرار گیرند. ما نیازی به ایجاد آنها نداریم، برای استفاده از آنها فقط باید آنها را فراخوانی کنیم. مثال ها: sum()،min()،max()،و غیره…

مثالی برای نشان دادن نحو توابع داخلی.

نحو

#python

li = [1,2,3]
ans = sum(li)
print(ans)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی:
6

در مثال کد بالا، از دو تابع داخلی sum() و print() برای یافتن و خروجی جمع لیست li استفاده کردیم.

عملکرد تعریف شده توسط کاربر: آنها توابع از پیش تعریف شده نیستند. کاربر عملکرد خود را برای برآوردن نیازهای خاص خود ایجاد می کند.

ایجاد یک تابع تعریف شده توسط کاربر در پایتون
ما می توانیم با استفاده از کلمه کلیدی یک تابع ایجاد کنیم دف.

نحو

#python
def function_name(argument):
    “ “ “
    functions logics
    ” ” ”
    return values
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال:

#python
def join(str1, str2):
    joined_str = str1 + str2
    return joined_str
print(join)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی:
<function join at 0x000002E42649D750>

در مثال کد بالا، تابعی به نام join ایجاد کردیم که دو پارامتر آن را ترکیب کرده و یک رشته پیوسته را برمی گرداند.

توابع فقط زمانی اجرا می شوند که فراخوانی شوند.

فراخوانی یک تابع:
بدون فراخوانی، یک تابع هرگز اجرا یا اجرا نمی شود. برای فراخوانی یک تابع از دستور زیر استفاده می کنیم.

نحو

#python

function_name(arguments)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال:

#python

print(join("Hello", "World"))
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی:
HelloWorld

در مثال کد بالا، تابع join() خود را با فراخوانی آن با دو آرگومان “Hello” و “World” اجرا کردیم و رشته پیوسته آنها “HelloWorld” را برگرداند.

توابع ناشناس در پایتون: توابع بدون نام و بدون استفاده از کلمه کلیدی def اعلان می شوند، توابع ناشناس نامیده می شوند. برای ایجاد این توابع از کلمه کلیدی lambda استفاده می کنیم و به این توابع، Lambda Functions نیز می گویند.

مثال:

#python 

li = [1,2,3]
new = list(map(lambda x:x+1, li))
print(new)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی:
[2, 3, 4]

روش ها در پایتون چیست؟

توابع داخل یک کلاس متد نامیده می شوند. متدها با یک کلاس/شی مرتبط هستند. از آنجایی که پایتون یک زبان برنامه نویسی شی گرا است، بنابراین حاوی اشیاء است و این اشیا دارای خواص و رفتار متفاوتی هستند. روش‌ها در پایتون برای تعریف رفتار اشیاء پایتون استفاده می‌شوند.

  • استفاده مجدد از کد را با ایجاد روش ها یا توابع مختلف در برنامه تسهیل می کند.
  • همچنین خوانایی و دسترسی به یک بلوک کد خاص را بهبود می بخشد.
  • ایجاد روش ها اشکال زدایی را برای برنامه نویسان آسان می کند.

ایجاد متد در پایتون:
ما از همان نحو به عنوان تابع استفاده می کنیم اما این بار باید در داخل یک کلاس باشد.

نحو

#python

class ClassName:
def method_name(parameters):
    # Statements…
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال:

#python

class Addition:

def add(self, num1, num2):
    return num1 + num2
print(Addition.add)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی:
<function Addition.add at 0x1088655e0>

فراخوانی یک متد در پایتون:
برای استفاده از یک متد، باید آن را فراخوانی کنیم. ما متد را درست مانند یک تابع فراخوانی می کنیم، اما از آنجایی که متدها با کلاس/شیء مرتبط هستند، باید از نام کلاس/شیء و عملگر نقطه برای فراخوانی آن استفاده کنیم.

نحو

#python 

object_name.method_name(arguments)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال:

#python

addition1 = Addition() # Object Instantiation
print(addition1.add(2, 3))
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی:
5

در مثال کد بالا، یک شی add1 برای کلاس Addition ایجاد کردیم و از آن شی برای فراخوانی متد add() با آرگومان های 2 و 3 استفاده کردیم. پس از فراخوانی، متد ما اجرا شد و مقدار 5 را برگرداند.

حضور در یک کلاس به متدها چند توانایی بیشتر می دهد. متدها می توانند به ویژگی های کلاس/شیء دسترسی داشته باشند. از آنجایی که متدها می توانند به ویژگی های class/object دسترسی داشته باشند، می توانند آنها را نیز تغییر دهند.

انواع روش در پایتون:

  1. روش نمونه: یکی از متداول‌ترین روش‌ها در پایتون است که برای تنظیم یا دریافت جزئیات در مورد نمونه‌ها (اشیاء) استفاده می‌شود. Self پارامتر پیش فرضی است که به نمونه ای از کلاس اشاره می کند.
  2. روش کلاس: برای دریافت وضعیت کلاس استفاده می شود، اما آنها نمی توانند به داده های نمونه خاصی دسترسی یا تغییر دهند. با استفاده از @classmethod decorator تعریف شده است.
  3. روش استاتیک: یک متد استاتیک نمی داند که یک کلاس یا یک نمونه است و نیازی به دسترسی به داده های کلاس ندارد. با استفاده از @staticmethod decorator تعریف شده است.

تفاوت های قابل توجه بین تابع و روش در پایتون

  • تعریف متد همیشه در داخل کلاس وجود دارد، در حالی که کلاس برای تعریف تابع لازم نیست.
  • توابع می توانند یک پارامتر صفر داشته باشند، در حالی که روش باید یک پارامتر پیش فرض، یا self یا cls، برای دریافت شی داشته باشد.
  • این متد داده‌ها را در کلاس اجرا می‌کند، در حالی که یک تابع برای برگرداندن یا ارسال داده استفاده می‌شود.
  • یک تابع را می توان مستقیماً با نام آن فراخوانی کرد، در حالی که یک متد را نمی توان با نام آن فراخوانی کرد.
  • این روش تحت برنامه نویسی شی گرا قرار دارد، در حالی که یک تابع یک عملکرد مستقل است.

با مشاهده تفاوت های فوق به سادگی می توان گفت که همه متدها توابع هستند اما همه توابع متد نیستند.

نتیجه
در این مقاله به توابع و متدها در پایتون، تفاوت آنها و انواع آنها پرداخته ایم.
امیدوارم از مقاله خوشتان بیاید.
به یادگیری ادامه دهید!!
به اشتراک گذاری ادامه دهید!!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا