تابع در پایتون

  • مدرس: علی بیگدلی
  • تاریخ انتشار: 1402/05/03
  • تعداد بازدید: 311

مجدد نویسی

استفاده مجدد کد یک بخش بسیار مهمی از برنامه نویسی در هر زبان است. افزایش حجم کد باعث سخت شدن ایجاد تغییرات و یا تشخیص عیب آن می شود. برای یک پروژه برنامه نویسی بزرگ ضروریست تا از اصولی استفاده کنیم که منجر به مختصر سازی و همچنین دسترسی راحت تر به بخش های مختلف را ایجاد کنیم.همچنین می بایست از اصل تکرار کد ممنوع پیروی کنیم.ما قبلا یکی از راههای انجام این کار را مورد بررسی قرار دادیم: با استفاده از حلقه ها. در این قسمت، دو مورد دیگر را نیز بررسی خواهیم کرد: توابع و ماژول ها. تذکر:گفته می شود که کد تکراری نامناسب با اصل WET مطابقت دارد که «Write Everything Twice» است یا ما از تایپ کردن لذت می بریم. شما قبلا از توابع در درس های قبلی استفاده کرده اید. هر بیانیه ای که شامل کلمه ای است که بعد از آن اطلاعات در پرانتز قرار می گیرد، یک فراخوانی تابع است. بعضی از نمونه هایی که قبلا دیده اید، در اینجا آمده است:

print("Hello world!")
range(2, 20)
str(12)
range(10, 20, 3)

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

ساخت تابع

اولین قدم در ساخت تابع علاوه بر استفاده از توابع از پیش تعریف شده، می توانید با استفاده از دستور def، توابع خود را ایجاد کنید. در اینجا یک مثال از تابع به نام my_func است. هیچ مقداری نمیگیرد و فقط سه بار یک خروجی را چاپ می کند. این تابع با نام مشخص تعریف شده است و سپس فراخوانده می شود. کد های داخل تابع فقط زمانی اجرا می شود که تابع فراخوانده می شود.

def my_func():
   print("spam")
   print("spam")
   print("spam") 
my_func()

خروجی:

>>>
spam
spam
spam
>>>

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

>>>hello()

def hello():
    print("Hello world!")

خروجی:

>>>
NameError: name 'hello' is not defined
>>>

آرگومان (argument) در تابع

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

def print_with_exclamation(word):
   print(word + "!")
    
print_with_exclamation("spam")
print_with_exclamation("eggs")
print_with_exclamation("python")

خروجی:

>>>
spam!
eggs!
python!
>>>

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

def print_sum_twice(x, y):
   print(x + y)
   print(x + y)

print_sum_twice(5, 8)

خروجی:

>>>
13
13
>>>

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

def function(variable):
   variable += 1
   print(variable)

function(7)
print(variable)

خروجی:

>>>
8

NameError: name 'variable' is not defined
>>>

نکته:از لحاظ فنی، پارامترهای متغیر در یک تعریف تابع هستند، و استدلال ها ارزش هایی هستند که در هنگام فراخوانی توابع در پارامترها قرار می گیرند.

بازگشت پاسخ از تابع return

بعضی توابع، مقادیری مانند int یا str، را می توانند بازگردانند تا بعدا استفاده شود. برای انجام این کار شما می توانید از عبارت return استفاده کنید. به عنوان مثال:

def max(x, y):
    if x >=y:
        return x
    else:
        return y
        
print(max(4, 7))
z = max(8, 5)
print(z)

خروجی:

>>>
7
8
>>>

نکته:از حالت Return در خارج از تابع نمی توان استفاده کرد هنگامی که شما مقداری را از تابع return می کنید بلافاصله تابع متوقف می شود. هر کدی بعد از return که باشد اجرا نخواهد شد.

def add_numbers(x, y):
  total = x + y
  return total
  print("This won't be printed")

print(add_numbers(4, 5))

خروجی:

>>>
9
>>>