📝 Python

Функции в Python

P
Автор
PyLand Team
📅
Опубликовано
30.03.2026
⏱️
Время чтения
3 мин
👁️
Просмотров
443
🌱
Уровень
Начальный

Проблема: написал код расчёта скидки, нужен в 10 местах — копируешь 10 раз. Нашёл ошибку — исправляешь в 10 местах.

Решение: функция — именованный блок кода, который вызывают много раз.


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

def имя_функции(параметры):
    код
    return результат  # опционально
  • def — ключевое слово
  • Двоеточие : обязательно
  • Тело функции — с отступом
def say_hello():
    print("Привет!")
    print("Как дела?")

say_hello()  # Привет!  Как дела?
say_hello()  # можно вызывать сколько угодно раз

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

Параметр — имя в определении функции. Аргумент — значение при вызове.

Один или несколько параметров

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

greet("Анна")   # Привет, Анна!
greet("Боб")    # Привет, Боб!
def introduce(name, age, city):
    print(f"{name}, {age} лет, из {city}")

introduce("Анна", 16, "Москва")  # Анна, 16 лет, из Москва

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

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

greet()         # Привет, Гость!
greet("Анна")   # Привет, Анна!

Именованные аргументы (keyword arguments)

def create_profile(name, age, city):
    print(f"{name}, {age}, {city}")

create_profile(age=16, city="Москва", name="Анна")  # порядок не важен

Return: возврат значения

# Без return — функция возвращает None
def add_print(a, b):
    print(a + b)

result = add_print(5, 3)  # Выведет 8
print(result)             # None ❌

# С return — возвращает значение для использования
def add(a, b):
    return a + b

result = add(5, 3)   # result = 8 ✅
print(result)        # 8

return также останавливает выполнение функции:

def check_age(age):
    if age < 18:
        return "Несовершеннолетний"  # выход здесь
    return "Взрослый"

Несколько возвращаемых значений

def get_stats(numbers):
    return min(numbers), max(numbers), sum(numbers) / len(numbers)

low, high, avg = get_stats([4, 7, 2, 9, 1])
print(low, high, avg)  # 1 9 4.6

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

Локальные переменные — существуют только внутри функции:

def test():
    x = 10
    print(x)  # 10

test()
print(x)  # ❌ NameError: x не существует!

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

x = 10

def test():
    print(x)  # читает глобальную

test()   # 10

Чтобы изменить глобальную внутри функции — нужно global:

counter = 0

def increment():
    global counter
    counter += 1

increment()
print(counter)  # 1

Лучше избегать global — передавай значения через параметры и return:

# ❌ С global
score = 0
def add_points(points):
    global score
    score += points

# ✅ Через параметры
def add_points(current_score, points):
    return current_score + points

score = add_points(0, 10)  # 10
score = add_points(score, 5)  # 15

Практический пример: калькулятор

def calculate(a, b, operation):
    if operation == "+":
        return a + b
    elif operation == "-":
        return a - b
    elif operation == "*":
        return a * b
    elif operation == "/":
        if b != 0:
            return a / b
        return "Ошибка: деление на ноль"
    return "Неизвестная операция"

print(calculate(10, 5, "+"))   # 15
print(calculate(10, 5, "/"))   # 2.0
print(calculate(10, 0, "/"))   # Ошибка: деление на ноль
print(calculate(10, 5, "?"))   # Неизвестная операция

Docstrings

Кратко документируй функции тройными кавычками:

def calculate_area(width, height):
    """Вычисляет площадь прямоугольника. Возвращает float."""
    return width * height

help(calculate_area)  # показать документацию

Лучшие практики

1. Именуй функции глаголами:

# ✅ Хорошо
def calculate_total(): ...
def validate_password(): ...
def send_email(): ...

# ❌ Плохо
def func1(): ...
def x(): ...

2. Одна функция — одна задача. Если функция делает 5 вещей, раздели её на 5 функций.

3. Используй return вместо print — результат можно будет использовать в коде:

# ❌ Только печатает, нельзя использовать результат
def calculate(a, b):
    print(a + b)

# ✅ Возвращает значение
def calculate(a, b):
    return a + b

total = calculate(5, 3)
if total > 10:
    print("Больше 10")

Частые ошибки

1. Забыл двоеточие или отступ:

def greet()      # ❌ нет ':'
    print("Hi")  # ❌ нет отступа

def greet():     # ✅
    print("Hi")

2. Не вызвал функцию (нет скобок):

greet   # ❌ это объект функции, ничего не выполняется
greet() # ✅

Связанные темы

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Как функции работают вместе в Python 🧩

Небольшая функция обычно решает одну понятную задачу. Но настоящая программа состоит из нескольких задач: получить...

📅 09.08.2026 👁️ 78
📝

Что такое ORM

ORM (Object-Relational Mapping) — технология, позволяющая работать с базой данных через объекты Python вместо SQL.

📅 30.06.2026 👁️ 363
📝

JSON: Сохранение данных

Цель: Научиться сохранять и загружать данные в формате JSON.

📅 03.04.2026 👁️ 467
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

Python с нуля: 7 практических проектов Открыть программу курса API на практике: взаимодействие с любыми сервисами Открыть программу курса