Функції Python
Функції представляють блок коду, який виконує певне завдання і який можна повторно використовувати в інших частинах програми. Формальне визначення функції:
def имя_функции ([параметри]):
інструкція
Визначення функції починається з виразу def, яке складається з імені функції, набору дужок з параметрами та двокрапки. Параметри в дужках необов'язкові. А з наступного рядка йде блок інструкцій, які виконує функція. Всі інструкції функції мають відступи від початку рядка.
Наприклад, визначення найпростішої функції:
def say_hello():
print("Hello")
Функція називається say_hello. Вона не має параметрів і містить одну єдину інструкцію, яка виводить на консоль рядок "Hello".
Для виклику функції вказується ім'я функції, після якого в дужках йде передача значень для всіх її параметрів. Наприклад:
def say_hello():
print("Hello")
say_hello()
say_hello()
say_hello()
Тут три рази поспіль викликається функція say_hello. В результаті ми отримаємо наступний консольний висновок:
Привіт
Привіт
Тепер визначимо і використовуємо функцію з параметрами:
def say_hello (ім'я):
друк("Привіт",ім'я)
say_hello ("том")
say_hello ("Боб")
say_hello ("Аліса")
Функція приймає ім'я параметр, і при виклику функції ми можемо передати замість параметра будь-яке значення:
Привіт, Боб
Привіт, Алісо
Значення за замовчуванням
Деякі параметри функції ми можемо зробити необов'язковими, вказавши для них значення за замовчуванням при визначенні функції. Наприклад:
def say_hello(name="Tom"):
print("Hello,", name)
say_hello()
say_hello("Bob")
Тут параметр name є необов'язковим. І якщо ми не передаємо при виклику функції для нього значення, то застосовується значення за замовчуванням, тобто рядок "Tom".
Іменовані параметри
При передачі значень функція зіставляє їх з параметрами в тому порядку, в якому вони передаються. Наприклад, нехай є наступна функція:
def display_info(name, age):
print("Name:", name, "\t", "Age:", age)
display_info("Tom", 22)
При виклику функції перше значення "Tom" передається першому параметру-параметру name, друге значення-число 22 передається другому параметру-age. І так далі по порядку. Використання іменованих параметрів дозволяє перевизначити порядок передачі:
def display_info(name, age):
print("Name:", name, "\t", "Age:", age)
display_info(age=22, name="Tom")
Іменовані параметри припускають вказівку імені параметра з присвоєнням йому значення при виклику функції.
Невизначена кількість параметрів
За допомогою символу зірочки можна визначити невизначену кількість параметрів:
def sum(*params):
result = 0
for n in params:
result + = n
return result
sumOfNumbers1 = sum(1, 2, 3, 4, 5) # 15
sumOfNumbers2 = sum(3, 4, 5, 6) # 18
print(sumOfNumbers1)
print(sumOfNumbers2)
В даному випадку функція sum приймає один параметр - *params, але зірочка перед назвою параметра вказує, що фактично на місце цього параметра ми можемо передати невизначену кількість значень або набір значень. У самій функції за допомогою циклу for можна пройтися по цьому набору і зробити з переданими значеннями різні дії. Наприклад, в даному випадку повертається сума чисел.
Повернення результату
Функція може повертати результат. Для цього у функції використовується оператор return, після якого вказується значення, що повертається:
def exchange(usd_rate, money):
result = round(money/usd_rate, 2)
return result
result1 = exchange(60, 30000)
print(result1)
result2 = exchange(56, 30000)
print(result2)
result3 = exchange(65, 30000)
print(result3)
Оскільки функція повертає значення, то ми можемо присвоїти значення будь-якої змінної і потім використовувати її: result2 = exchange(56, 30000).
У Python функція може повертати відразу кілька значень:
def create_default_user():
name = "Tom"
age = 33
return name, age
user_name, user_age = create_default_user()
print("Name:", user_name, "\t Age:", user_age)
Тут функція create_default_user повертає два значення: name і age. При виклику функції ці значення по порядку присвоюються змінним user_name і user_age, і ми можемо використовувати їх.
Функція main
В програмі може бути визначено безліч функцій. І щоб всіх їх упорядкувати, доброю практикою вважається додавання спеціальної функції main, в якій потім вже викликаються інші функції:
def main():
say_hello("Tom")
usd_rate = 56
money = 30000
result = exchange(usd_rate, money)
print("До видачі", result, "доларів")
def say_hello(name):
print("Hello,", name)
def exchange(usd_rate, money):
result = round(money/usd_rate, 2)
return result
# Виклик функції main
main()