Создание функций в Python: подробный разбор с примерами

Раздел: Основы Python -> Основы Python: функции

Основы определения функций в Python

Наиболее эффективный способ создать функцию в Python – использовать ключевое слово def. Это позволяет многократно вызывать один и тот же блок кода, избегая дублирования.

Рассмотрим простейшую функцию, которая выводит приветствие:

def greet():
print("Привет, мир!")

greet()

Def python задачи (задачи на определение функций (def) в python)

Привет, мир!

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

Типичная ошибка – забыть двоеточие или сделать неправильный отступ (использовать пробелы вместо табуляции). Решение: всегда ставить двоеточие и использовать 4 пробела для отступа.

Как создать функцию, принимающую аргументы?

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

greet_user("Аня")
Привет, Аня!

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

Если вызвать функцию без аргумента, возникнет TypeError. Чтобы избежать, можно задать значение по умолчанию: def greet_user(name="гость").

Как создать функцию с возвратом значения?

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

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

Ключевое слово return возвращает результат. Если его не использовать, функция вернет None.

Ошибка – забыть return. Функция выполняет код, но не передает результат обратно. Решение: всегда проверять, нужно ли возвращать значение.

Как добавить документацию к функции (docstring)?

def multiply(x, y):
"""Возвращает произведение x и y."""
return x * y

help(multiply)
Help on function multiply in module __main__:

multiply(x, y)
Возвращает произведение x и y.

Документация записывается сразу после определения функции в тройных кавычках. Она доступна через __doc__ или help().

Не путать docstring с комментарием. Комментарии не видны в справке. Решение: использовать docstring для документации, а комментарии – для пояснений внутри кода.

Как создать функцию с переменным числом аргументов?

def sum_all(*args):
return sum(args)

print(sum_all(1, 2, 3))
6

Звездочка *args собирает все позиционные аргументы в кортеж. Аналогично **kwargs для именованных.

Ошибка – использовать только имя args не обязательно, но по соглашению пишется именно так. Путать с распаковкой кортежа. Решение: четко различать *args при определении и *iterable при вызове.

Как использовать lambda-функцию как альтернативу def?

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

Lambda-функции – это анонимные однострочные функции. Используются для быстрых вычислений, особенно в map, filter, sorted.

Ошибка – пытаться вставить сложную логику в lambda. Это ухудшает читаемость. Решение: для сложных операций использовать обычный def.

Как создать функцию, вызывающую саму себя (рекурсия)?

def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)

print(factorial(5))
120

Рекурсия – функция, которая вызывает себя. Обязательно должно быть базовое условие для выхода.

Ошибка – забыть базовый случай, что приведет к бесконечной рекурсии и ошибке RecursionError. Решение: всегда проверять условие завершения.

Расширенные примеры функций

Пример 1. Функция для вычисления площади круга

Пример
import math

def circle_area(radius):
"""Вычисляет площадь круга по радиусу."""
return math.pi * radius ** 2

print(circle_area(5))
78.53981633974483

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

Пример
def is_palindrome(s):
s = s.replace(" ", "").lower()
return s == s[::-1]

print(is_palindrome("А роза упала на лапу Азора"))
True

Пример 3. Использование lambda с map для преобразования списка

Пример
numbers = [1, 2, 3, 4]
squares = list(map(lambda x: x ** 2, numbers))
print(squares)
[1, 4, 9, 16]

Пример 4. Генератор чисел Фибоначчи через рекурсию

Пример
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)

for i in range(10):
print(fibonacci(i), end=" ")
0 1 1 2 3 5 8 13 21 34

Пример 5. Функция с произвольным количеством именованных аргументов (**kwargs)

Пример
def info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

info(name="Иван", age=30, city="Москва")
name: Иван
age: 30
city: Москва

Пример 6. Функция-декоратор (простейший)

Пример
def timer(func):
def wrapper(*args, **kwargs):
import time
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"Время выполнения: {end - start:.4f} сек") return result return wrapper @timer def long_func(): sum(range(1000000)) long_func()
Время выполнения: 0.0234 сек

Пример 7. Вложенная функция (замыкание)

Пример
def make_multiplier(n):
    def multiplier(x):
        return x * n
    return multiplier

double = make_multiplier(2)
print(double(5))
10

Задачи на определение функций (def) в Python - comments

En
Def python задачи (python)