PyGuide

Функции

Функции в Python

Что такое функция

Функция — это отдельный блок кода с именем, который можно вызывать сколько угодно раз. Она нужна, чтобы не повторять один и тот же код и делать программу более удобной и понятной.

def my_function():
    print("Hello from a function")

Вызов функции

Вызов функции — это момент, когда программа начинает выполнять код внутри функции. Пока функция не вызвана, её код не работает.

my_function()

Аргументы (параметры)

Аргументы — это данные, которые передаются в функцию. Они позволяют функции работать с разными значениями и не быть «жёстко заданной».

Функции могут принимать данные (аргументы):

def my_function(name):
    print(name + " привет")

my_function("Иван")

Несколько аргументов

Функция может принимать сразу несколько значений. В этом случае важно передавать их в правильном порядке, иначе результат будет неправильным или появится ошибка.

def my_function(fname, lname):
    print(fname + " " + lname)

my_function("Иван", "Иванов")

*args (много аргументов)

*args используется, когда заранее неизвестно, сколько аргументов будет передано. Все переданные значения собираются в один список (точнее кортеж), и с ними можно работать внутри функции.

def my_function(*kids):
    print("Третий ребёнок: " + kids[2])

my_function("Иван", "Пётр", "Анна")

Аргументы по ключу

Аргументы можно передавать не по порядку, а по имени. Это делает код более понятным и позволяет менять порядок аргументов без ошибок.

def my_function(child3, child2, child1):
    print("Младший: " + child3)

my_function(child1="Иван", child2="Пётр", child3="Анна")

**kwargs (много именованных аргументов)

**kwargs позволяет передать неограниченное количество аргументов по имени. Внутри функции они хранятся как словарь (ключ — значение).

def my_function(**kid):
    print("Фамилия: " + kid["lname"])

my_function(fname="Иван", lname="Иванов")

Значения по умолчанию

Можно задать значение аргумента заранее. Если при вызове функции его не передали, будет использовано это значение. Это удобно, чтобы делать аргументы необязательными.

def my_function(country="Норвегия"):
    print("Я из " + country)

my_function("Швеция")
my_function()

Передача списка

В функцию можно передавать не только отдельные значения, но и целые списки. Это позволяет обрабатывать сразу несколько элементов (например, перебрать их в цикле).

def my_function(food):
    for x in food:
        print(x)

fruits = ["яблоко", "банан", "вишня"]
my_function(fruits)

Возврат значения (return)

Функция может вернуть результат своей работы с помощью return. Это значит, что результат можно сохранить в переменную или использовать дальше в программе.

def my_function(x):
    return 5 * x

print(my_function(3))

Пустая функция

Иногда функция нужна, но код внутри неё ещё не написан. В таком случае используется pass, чтобы программа не выдавала ошибку.

def my_function():
    pass

Рекурсия

Рекурсия — это когда функция вызывает саму себя. Это используется для задач, которые можно разбить на более простые такие же задачи (например, факториал). Важно, чтобы было условие остановки, иначе будет бесконечный вызов.

def factorial(x):
    if x == 1:
        return 1
    else:
        return x * factorial(x - 1)

print(factorial(5))