06. Функции

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

Функция — это кусочек кода, который выполняет определённое действие. Она помогает не повторять один и тот же код много раз.
Представь, что функция — это мини-машина: ты подаёшь ей вход (данные), а она выдаёт результат (ответ).

Зачем нужны функции

Функции делают код:
  • Удобным — можно использовать один и тот же код несколько раз.
  • Понятным — код делится на логические блоки.
  • Простым в отладке — легче искать ошибки.

Создание функции

Функция создаётся с помощью ключевого слова def:

def greet():
    print('Привет, Python!')

# Вызов функции greet()

Результат:

Привет, Python!

Аргументы функций

Функция может принимать параметры — данные, с которыми она работает.

def greet(name):
    print('Привет,', name, '!')

greet('Анна') greet('Иван')

Результат:

Привет, Анна!
Привет, Иван!

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

Функция может не только что-то делать, но и возвращать результат.

def add(a, b):
    return a + b

result = add(3, 5) print('Сумма:', result)

Результат:

Сумма: 8

Типы аргументов

В Python есть разные виды аргументов:
  • Обязательные — нужно передать при вызове.
  • Необязательные (со значением по умолчанию).
  • *args — принимает любое количество аргументов.
  • **kwargs — принимает именованные аргументы (словарь).

Примеры


def power(x, n=2):
    return x ** n
print(power(3))     # 9
print(power(3, 3))  # 27

def show_names(*names):
    for n in names:
        print('Имя:', n)
show_names('Анна', 'Иван', 'Олег')

def user_info(**info):
    for key, value in info.items():
        print(key, ':', value)
user_info(name='Анна', age=25, city='Москва')

Передача и возврат данных

Функции можно вызывать внутри других функций:

def square(x):
    return x * x

def sum_of_squares(a, b): return square(a) + square(b)

print(sum_of_squares(2, 3)) # 13

Область видимости (scope)

Переменные внутри функции — локальные. Они не видны снаружи.

def test():
    x = 10  # локальная переменная
    print('Внутри функции:', x)

test() # print(x) # Ошибка — переменная x не существует вне функции

Докстроки (docstring)

Это комментарий внутри функции, объясняющий, что она делает.

def greet(name):
    """Функция выводит приветствие по имени."""
    print('Привет,', name)

Анонимные функции (lambda)

Иногда удобно написать короткую функцию прямо в одну строку:

square = lambda x: x * x
print(square(4))  # 16

Практические примеры

  • Напиши функцию, которая возвращает максимум из трёх чисел.
  • Создай функцию, которая принимает имя и возраст, и выводит приветствие.
  • Сделай функцию, которая считает количество гласных букв в слове.

Типичные ошибки новичков

  • Забывают поставить круглые скобки при вызове функции (пишут greet вместо greet()).
  • Не возвращают значение через return, когда это нужно.
  • Используют одинаковые имена переменных внутри и снаружи функции, путая область видимости.

Мини-проект: калькулятор функций


def add(a, b):
    return a + b

def sub(a, b): return a - b

def mul(a, b): return a * b

def div(a, b): if b != 0: return a / b else: return 'Деление на ноль!'

print('Выберите операцию: +, -, *, /') op = input('> ') a = float(input('Введите первое число: ')) b = float(input('Введите второе число: '))

if op == '+': print('Результат:', add(a, b)) elif op == '-': print('Результат:', sub(a, b)) elif op == '*': print('Результат:', mul(a, b)) elif op == '/': print('Результат:', div(a, b)) else: print('Неизвестная операция!')

Итоги урока

Теперь вы знаете:
  • Как создавать и вызывать функции с помощью def.
  • Что такое аргументы и как использовать return.
  • Что такое *args и **kwargs.
  • Как работать с областью видимости и докстроками.
  • Как использовать лямбда-функции и применять функции в мини-проектах.