САМОСТОЯТЕЛЬНОЕ ОБУЧЕНИЕ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ
×

Python Учебник

Python Главная Python Введение Python Начало работ Python Синтаксис Python Комментарии Python Переменные Python Тип данных Python Числа Python Подбор Python Строки Python Булевы Python Операторы Python Списки Python Кортежи Python Наборы Python Словари Python If...Else Python Циклы While Python Циклы For Python Функции Python Лямбда Python Массивы Python Классы/Объекты Python Наследование

Python Функции



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

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

В результате функция может возвращать данные.


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

В Python функция определяется с помощью ключевого слова: def.

Пример

def my_function():
  print('Привет из функции')

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

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

Пример

def my_function():
  print('Привет из функции')

my_function()
Попробуйте сами »

Аргументы

Информация может передаваться в функции в качестве аргументов.

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

В следующем примере есть функция с одним аргументом (fname).Когда функция вызывается, мы передаем имя, которое используется внутри функции для вывода полного имени:

Пример

def my_function(fname):
  print(fname + ' Refsnes')

my_function('Emil')
my_function('Tobias')
my_function('Linus')
Попробуйте сами »

Аргументы часто сокращаются до args в документации по Python



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

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

С точки зрения функции:

Параметр — это переменная, указанная в скобках в определении функции.

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


Количество аргументов

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

Пример

Эта функция ожидает 2 аргумента и получает 2 аргумента:

def my_function(fname, lname):
  print(fname + ' ' + lname)

my_function('Emil', 'Refsnes')
Попробуйте сами »

Если вы попытаетесь вызвать функцию с 1 или 3 аргументами, вы получите ошибку:

Пример

Эта функция ожидает 2 аргумента, но получает только 1:

def my_function(fname, lname):
  print(fname + ' ' + lname)

my_function('Emil')
Попробуйте сами »

Произвольные аргументы, *args

Если вы не знаете, сколько аргументов будет передано в вашу функцию, добавьте * перед именем параметра в определении функции.

Таким образом, функция получит кортеж аргументов и сможет получить соответствующий доступ к элементам:

Пример

Если количество аргументов неизвестно, добавьте * перед именем параметра:

def my_function(*kids):
  print('Самый младший ребенок ' + kids[2])

my_function('Emil', 'Tobias', 'Linus')
Попробуйте сами »

Произвольные агументы часто сокращаются до args в документации по Python


Аргументы ключевых слов

Вы также можете отправлять аргументы с синтаксисом ключ = значение syntax.

Таким образом, порядок аргументов не имеет значения.

Пример

def my_function(child3, child2, child1):
  print('Самый младший ребенок ' + child3)

my_function(child1 = 'Emil', child2 = 'Tobias', child3 = 'Linus')
Попробуйте сами »

Фраза Аргументы ключевого слова часто сокращается до kwargs в документации Python.


Произвольные аргументы ключевого слова, **kwargs

Если вы не знаете, сколько ключевых слов будет передано в вашу функцию, добавьте две звездочки: ** перед именем параметра в определении функции.

Таким образом, функция получит словарь аргументов и сможет соответственно получить доступ к элементам:

Пример

Если количество аргументов ключевого слова неизвестно, добавьте двойной ** перед именем параметра:

def my_function(**kid):
  print('Его фамилия ' + kid['lname'])

my_function(fname = 'Tobias', lname = 'Refsnes')
Попробуйте сами »

Произвольные аргументы Kword часто сокращаются до **kwargs в документации Python.


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

В следующем примере показано, как использовать значение параметра по умолчанию.

Если мы вызываем функцию без аргумента, она использует значение по умолчанию:

Пример

def my_function(country = 'России'):
  print('Я из ' + country)

my_function('Швеции')
my_function('Индии')
my_function()
my_function('Бразилии')
Попробуйте сами »

Передача списка в качестве аргумента

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

Например. если вы отправите список в качестве аргумента, он все равно будет списком, когда он достигнет функции:

Пример

def my_function(food):
  for x in food:
    print(x)

fruits = ['яблоко', 'банан', 'вишня']

my_function(fruits)
Попробуйте сами »

Возвращаемые значения

Чтобы функция возвращала значение, используйте оператор return:

Пример

def my_function(x):
  return 5 * x

print(my_function(3))
print(my_function(5))
print(my_function(9))
Попробуйте сами »

Оператор pass

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

Пример

def myfunction():
  pass
Попробуйте сами »

Рекурсия

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

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

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

В этом примере, tri_recursion() это функция, которую мы определили для вызова самой себя ("recurse"). Мы используем переменную k в качестве данных, которые уменьшаются (-1) каждый раз. Рекурсия заканчивается, когда условие не больше 0 (т. е. когда оно равно 0).

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

Пример

Пример рекурсии

def tri_recursion(k):
  if(k > 0):
    result = k + tri_recursion(k - 1)
    print(result)
  else:
    result = 0
  return result

print("\n\nРезультаты примера рекурсии")
tri_recursion(6)
Попробуйте сами »

Проверьте себя с помощью упражнений

Упражнение:

Создайте функцию с именем my_function.

:
  print("Привет из функции")