Функции в Python

Функция — это блок кода, выполняющий конкретную задачу.

Предположим, нужно создать программу для рисования круга и его раскрашивания. Можно создать две функции для решения этой задачи:

  1. функцию для создания круга

  2. функцию для раскрашивания фигуры

Разделение сложной задачи на меньшие части делает программу понятнее и удобнее для повторного использования.


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

Создадим нашу первую функцию.

def greet():
    print('Hello World!')

Разные части программы:

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

Здесь мы создали простую функцию greet(), которая печатает Hello World!

Примечание

При написании функции обращайте внимание на отступы — пробелы в начале строки кода.

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


Вызов функции

В примере выше мы объявили функцию greet().

def greet():
    print('Hello World!')

Если запустить этот код, мы не получим вывод.

Это потому, что создание функции не означает выполнение кода внутри неё. Это значит, что код есть и его можно использовать.

Чтобы использовать функцию, нужно её вызвать.

Вызов функции

greet()

Пример: вызов функции Python

def greet():
    print('Hello World!')

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

print('Outside function')

Вывод

Hello World!
Outside function

В примере мы создали функцию greet(). Вот как программа передаёт управление:

Работа функции Python

Здесь:

  1. Когда вызывается функция greet(), управление программой передаётся определению функции.

  2. Весь код внутри функции выполняется.

  3. Управление переходит к следующему оператору после вызова функции.


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

Аргументы — это входные данные, передаваемые в функцию.

def greet(name):
    print("Hello", name)

# передача аргумента
greet("John")

Пример вывода 1

Hello John

Здесь мы передали 'John' как аргумент функции greet().

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

Вызовем функцию с другим аргументом.

greet("David")

Пример вывода 2

Hello David

Пример: функция сложения двух чисел

# функция с двумя аргументами
def add_numbers(num1, num2):
    sum = num1 + num2
    print("Sum: ", sum)

# вызов функции с двумя значениями
add_numbers(5, 4)

Вывод

Sum: 9

В примере мы создали функцию add_numbers() с аргументами num1 и num2.

Функция Python с аргументами

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

Примечание

Параметры

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

def print_age(age):  # age — параметр
    print(age)

В этом примере функция print_age() принимает age как ввод. Однако на этом этапе реальное значение не указано. Параметр age — это плейсхолдер, ожидающий конкретного значения при вызове.

Аргументы

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

print_age(25)  # 25 — аргумент

Здесь при вызове функции аргумент 25 передаётся в функцию.


Оператор return

Мы возвращаем значение из функции через оператор return.

# определение функции
def find_square(num):
    result = num * num
    return result

# вызов функции
square = find_square(3)

print('Square:', square)

Вывод

Square: 9

В примере мы создали функцию find_square(). Функция принимает число и возвращает его квадрат.

Работа функций в Python

Примечание

Оператор return также обозначает завершение функции. Любой код после return не выполняется.


Оператор pass

Оператор pass служит плейсхолдером для будущего кода, предотвращая ошибки от пустых блоков. Обычно используется там, где код запланирован, но ещё не написан.

def future_function():
    pass

# выполнится без действий или ошибок
future_function()

Библиотечные функции Python

Python предоставляет встроенные функции, которые можно использовать прямо в программе. Не нужно создавать функцию — достаточно её вызвать.

Некоторые библиотечные функции:

  1. print() — печатает строку в кавычках.

  2. sqrt() — возвращает квадратный корень числа.

  3. pow() — возвращает степень числа.

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

Например, sqrt() определена внутри модуля math.


Пример: библиотечная функция Python

import math

# sqrt вычисляет квадратный корень
square_root = math.sqrt(4)

print("Square Root of 4 is",square_root)

# pow() вычисляет степень
power = pow(2, 3)

print("2 to the power 3 is",power)

Вывод

Square Root of 4 is 2.0
2 to the power 3 is 8

Здесь мы импортировали модуль math, чтобы использовать библиотечные функции sqrt() и pow().


Подробнее о функциях Python

Пользовательские функции vs Стандартные библиотечные

В Python функции делятся на две категории: пользовательские и стандартные библиотечные.

Пользовательские функции

Это функции, которые мы создаём сами. Это наши собственные инструменты, разработанные для конкретных задач. Они не часть стандартного набора Python, что даёт нам свободу адаптировать их под наши нужды.

Стандартные библиотечные функции

Это «готовые подарки» Python. Они встроены в Python и готовы к использованию. Эти функции покрывают широкий спектр обычных задач: математика, работа с файлами, работа со строками и т.д. Они проверены сообществом Python, что обеспечивает эффективность и надёжность.

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

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

Пример:

def greet(name, message="Hello"):
    print(message, name)

# вызов с двумя аргументами
greet("Alice", "Good Morning")

# вызов с одним аргументом
greet("Bob")

Вывод

Good Morning Alice
Hello Bob

Здесь message имеет значение по умолчанию Hello. Когда greet() вызывается с одним аргументом, message использует значение по умолчанию.

Использование *args и **kwargs в функциях

Можно обрабатывать произвольное количество аргументов через специальные символы *args и **kwargs.

*args в функциях

Использование *args позволяет функции принимать любое количество позиционных аргументов.

# функция для суммы любого количества аргументов
def add_all(*numbers):
    return sum(numbers)

# передача любого количества аргументов
print(add_all(1, 2, 3, 4))

Вывод

10

**kwargs в функциях

Использование **kwargs позволяет функции принимать любое количество именованных аргументов.

# функция для печати именованных аргументов
def greet(**words):
    for key, value in words.items():
        print(f"{key}: {value}")

# передача любого количества именованных аргументов
greet(name="John", greeting="Hello")

Вывод

name: John
greeting: Hello

Видео: введение в функции Python

См. также: Словари (Dictionary) в Python.