Создание функций в Python: подробный разбор с примерами
Основы определения функций в Python
Наиболее эффективный способ создать функцию в Python – использовать ключевое слово def. Это позволяет многократно вызывать один и тот же блок кода, избегая дублирования.
Рассмотрим простейшую функцию, которая выводит приветствие:
def greet():
print("Привет, мир!")
greet()Def python задачи (задачи на определение функций (def) в python)
Привет, мир!
Пояснение: ключевое слово def объявляет функцию, после него идет имя и круглые скобки. Двоеточие обязательно. Тело функции выделяется отступом. Вызов выполняется по имени с круглыми скобками.
Как создать функцию, принимающую аргументы?
def greet_user(name):
print(f"Привет, {name}!")
greet_user("Аня")Привет, Аня!
Аргументы указываются внутри скобок при определении. При вызове передается фактическое значение.
def greet_user(name="гость").Как создать функцию с возвратом значения?
def add(a, b):
return a + b
result = add(3, 5)
print(result)8
Ключевое слово return возвращает результат. Если его не использовать, функция вернет None.
Как добавить документацию к функции (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().
Как создать функцию с переменным числом аргументов?
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3))6
Звездочка *args собирает все позиционные аргументы в кортеж. Аналогично **kwargs для именованных.
Как использовать lambda-функцию как альтернативу def?
square = lambda x: x ** 2
print(square(4))16
Lambda-функции – это анонимные однострочные функции. Используются для быстрых вычислений, особенно в map, filter, sorted.
Как создать функцию, вызывающую саму себя (рекурсия)?
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
print(factorial(5))120
Рекурсия – функция, которая вызывает себя. Обязательно должно быть базовое условие для выхода.
Расширенные примеры функций
Пример 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