Найти тему
Удалёнка

Python. Функция

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

Существуют некоторые правила для создания функций в Python.

  1. Блок функции начинается с ключевого слова def, после которого следуют название функции и круглые скобки ().
  2. Любые аргументы, которые принимает функция, должны находиться внутри этих скобок.
  3. После скобок идет двоеточие : и с новой строки с отступом начинается тело функции.
-2

Функция в Python. Синтаксис.

Т. е. функция определяется следующим образом: def <имя_функции>(<аргументы функции>):.

Пример функции:

Python

def calc(a, b): print(a)
print(b)
return a + b

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

Python

calc(7, 19)

Выражение return прекращает выполнение функции и возвращает указанное после выражения значение. Выражение return без аргументов - это то же самое, что и выражение return None. Соответственно, теперь становится возможным, например, присваивать результат выполнения функции какой либо переменной.
Например, создадим переменную
sum и присвоим ей значение :

def calc(a, b): print(a)
print(b)
return a + b

sum = calc(21, 19)

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

Рассмотрим каждый из типов подробнее.

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

Например:Вызывая функцию, мы можем передавать ей следующие типы аргументов:Обязательные аргументы (Required arguments)
Аргументы-ключевые слова (Keyword arguments)
Аргументы по-умолчанию (Default arguments)
Аргументы произвольной длины (Variable-length argumens)

# Определим функцию hour_to_sec # Она переводит часы в секунды def hour_to_sec(hour, min, sec): return hour * 60 * 60 + min * 60 + sec

# Вызовем функцию. Количество и порядок аргументов очень важны! # Иначе результат вычислений будет неверным >>> hour_to_sec(0, 5, 50)
350

2. Аргументы-ключевые слова
Аргументы-ключевые слова используются при вызове функции. Благодаря ключевым аргументам, вы можете задавать произвольный (то есть не такой, каким он описан при создании функции) порядок аргументов.
Например:

# Используем ту же самую функцию def hour_to_sec(hour, min, sec): return hour * 60 * 60 + min * 60 + sec

# Хотя в определении первым параметром идут часы, # мы можем передать секунды в качестве первого аргумента. # В таком случае мы обязаны указать имя параметра >>> hour_to_sec(sec=50, hour=0, min=5)
350

3. Аргументы по-умолчанию
Аргумент по умолчанию, это аргумент, значение для которого задано изначально, при создании функции. Если при вызове функции вы не будете передавать данный аргумент, то функция возьмет его значение по-умолчанию.
Например:

# Функция принимает два параметра: имя и возраст # Параметр age имеет значение по-умолчанию def person(name, age=25): print(name, 'is', age, 'years old')

# Передадим функции оба параметра и посмотрим результат >>> person('Ivan', 19)
Ivan
is 19 years old

# Теперь передадим функции только 1 параметр # Параметр age примет свое значение по-умолчанию >>> person('Ivan')
Ivan
is 25 years old

4. Аргументы произвольной длины
Иногда возникает ситуация, когда вы заранее не знаете, какое количество аргументов будет необходимо принять функции. В этом случае следует использовать аргументы произвольной длины. Они задаются произвольным именем переменной, перед которой ставится звездочка (
*).
Например:

# Определим функцию с произвольным количеством параметров # Данная функция выводит переданные ей аргументы в консоль def print_args(*args): print(args)

# Вызовем функцию без аргументов >>> print_args()
()

# Вызовем функцию с 1 аргументом >>> print_args('Строка')
('Строка')

# Вызовем функцию с 5ю аргументами >>> print_args(1, 'Строка', 'Еще строка', 38, 4)
(1, 'Строка', 'Еще строка', 38, 4)