Урок 5: Функции

Создание функций, параметры, возвращаемые значения, область видимости

55 минут
8 заданий
Урок 5 из 10

1 Что такое функции?

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

Пример из жизни

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

functions.py
# Без функции — повторяем код
print("Привет!")
print("Как дела?")
print("Привет!")  # Повторение!
print("Как дела?")  # Повторение!

# С функцией — вызываем один раз
def greet():
    print("Привет!")
    print("Как дела?")

greet()  # Вызов функции
greet()  # Ещё раз — без повторения кода!

Разбор программы

Ключевое слово def (от английского "define" — определить) создаёт функцию.

greet() — это имя функции. Скобки () означают вызов функции.

Код внутри функции выполняется только при её вызове.

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

Синтаксис создания функции в Python очень простой:

def имя_функции():
    # Код функции
    print("Это функция")

# Вызов функции
имя_функции()

Структура функции:

  1. def — ключевое слово для создания функции
  2. имя_функции — название функции (обычно с маленькой буквы, слова разделяются подчёркиванием)
  3. () — скобки для параметров (могут быть пустыми)
  4. : — двоеточие в конце строки
  5. Отступ — весь код функции с отступом (4 пробела)
# Примеры правильных имён функций
def calculate_sum():
    pass

def print_welcome_message():
    pass

def get_user_name():
    pass

# Неправильные имена (не используй!)
# def 123function():  # Начинается с цифры
# def my-function():  # Дефис вместо подчёркивания
# def print():        # Это ключевое слово Python

Совет

Имена функций должны быть понятными и описывать, что делает функция. Например, calculate_area() лучше, чем func1().

3 Параметры и аргументы

Функции могут принимать данные для работы. Эти данные называются параметрами (при создании функции) и аргументами (при вызове функции).

# name — это ПАРАМЕТР
def greet(name):
    print(f"Привет, {name}!")

# "Анна" и "Иван" — это АРГУМЕНТЫ
greet("Анна")  # Привет, Анна!
greet("Иван")  # Привет, Иван!
InParameter

Параметр

Переменная в определении функции

def func(x):
OutArgument

Аргумент

Значение при вызове функции

func(5)
# Функция с несколькими параметрами
def add_numbers(a, b):
    result = a + b
    print(f"{a} + {b} = {result}")

add_numbers(5, 3)    # 5 + 3 = 8
add_numbers(10, 20)  # 10 + 20 = 30
add_numbers(100, 50) # 100 + 50 = 150

4 Возвращаемые значения

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

# Функция, которая возвращает значение
def square(x):
    return x * x

# Сохраняем результат в переменную
result = square(5)
print(result)  # 25

# Используем результат сразу
print(square(10))  # 100

Важно!

return немедленно завершает выполнение функции и возвращает значение. Код после return не выполняется!

def check_number(num):
    if num > 0:
        return "Положительное"
    elif num < 0:
        return "Отрицательное"
    else:
        return "Ноль"
    
    # Этот код НИКОГДА не выполнится
    print("Это не выведется")

print(check_number(5))   # Положительное
print(check_number(-3))  # Отрицательное
print(check_number(0))   # Ноль

Совет

Функция может возвращать несколько значений одновременно, используя кортеж:

return x, y, z

5 Область видимости переменных

Переменные, созданные внутри функции, существуют только внутри этой функции. Это называется локальной областью видимости.

def my_function():
    local_var = "Я локальная"
    print(local_var)  # Работает

my_function()  # Выведет: Я локальная

# print(local_var)  # ОШИБКА! Переменная не существует вне функции

Локальные переменные

Созданы внутри функции, доступны только внутри неё

def func():
    x = 5 # локальная
    print(x)

Глобальные переменные

Созданы вне функций, доступны везде

y = 10 # глобальная

def func():
    print(y) # можно использовать
# Глобальная переменная
global_var = "Я глобальная"

def show_global():
    # Глобальную переменную можно читать внутри функции
    print(global_var)  # Я глобальная

def modify_global():
    # Чтобы изменить глобальную переменную, нужно использовать global
    global global_var
    global_var = "Я изменена"

show_global()  # Я глобальная
modify_global()
print(global_var)  # Я изменена

Внимание!

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

6 Параметры по умолчанию

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

def greet(name, greeting="Привет"):
    print(f"{greeting}, {name}!")

greet("Анна")  # Привет, Анна!
greet("Иван", "Здравствуйте")  # Здравствуйте, Иван!
greet("Мария", "Добрый день")  # Добрый день, Мария!

Один параметр по умолчанию

def func(a, b=10):
    return a + b

func(5) → 15

func(5, 20) → 25

Несколько параметров по умолчанию

def func(a=1, b=2, c=3):
    return a + b + c

func() → 6

func(10) → 15

func(10, 20, 30) → 60

Совет

Параметры по умолчанию должны идти после обычных параметров. Нельзя писать: def func(a=5, b):

7 Практика

Отлично! Теперь давай закрепим знания на практике. Реши несколько заданий:

Задание 1 Легко

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

Создай функцию say_hello(), которая выводит "Привет, мир!".

Подсказка

Используй ключевое слово def для создания функции.

Задание 2 Легко

Функция с параметром

Создай функцию greet(name), которая приветствует человека по имени.

Подсказка

Добавь параметр name в скобки после имени функции.

Задание 3 Средне

Функция с несколькими параметрами

Создай функцию add(a, b), которая складывает два числа и выводит результат.

Подсказка

Добавь два параметра a и b, затем сложи их.

Задание 4 Средне

Функция с возвратом значения

Создай функцию multiply(a, b), которая возвращает произведение двух чисел.

Подсказка

Используй ключевое слово return для возврата результата.

Задание 5 Средне

Параметр по умолчанию

Создай функцию greet(name, greeting="Привет") с параметром по умолчанию.

Подсказка

Укажи значение по умолчанию после параметра через знак =.

Задание 6 Сложно

Функция с условием

Создай функцию check_age(age), которая проверяет возраст и возвращает "Совершеннолетний" или "Несовершеннолетний".

Подсказка

Используй условие if age >= 18 внутри функции.

Задание 7 Сложно

Функция с циклом

Создай функцию print_numbers(n), которая выводит числа от 1 до n.

Подсказка

Используй цикл for с функцией range() внутри функции.

Задание 8 Сложно

Калькулятор

Создай функцию calculator(a, b, operation), которая выполняет математические операции (+, -, *, /).

Подсказка

Используй условие if/elif/else для выбора операции.