Рубрики
Без рубрики

Функции Python: Объяснено для начинающих

Функция (иногда называемая методом или процедурой) – это набор операторов, предназначенных для выполнения определенной задачи. На функции Python обычно ссылаются по имени, и в этом случае,…

Автор оригинала: Ebenezer Don.

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

В Python/| функции являются гражданами первого класса . Это означает, что вы можете передавать функции, как и любой другой объект; вы можете назначать их переменным, хранить их в списках и кортежах или определять их внутри других функций. Python уже поставляется с предопределенными функциями, такими как print() . Эти предопределенные функции известны как встроенные функции, и Python позволяет создавать ваши функции, называемые определяемыми пользователем функциями.

В этой статье рассматриваются следующие точки соприкосновения :

  • Как определить функции в Python
  • Параметры и аргументы функции
  • Возвращаемые значения
  • Как вызывать функции Python
  • Лямбда-функции Python
  • Область действия переменной

Если вы не настроили Python локально и хотите запустить примеры, используемые в этой статье, вы можете использовать онлайн-интерпретатор, например On line Интерпретатор GDB Python .

Как определить функции в Python

Способ определения функции в Python заключается в использовании ключевого слова def . Давайте напишем функцию, которая принимает два числа и возвращает их сумму в качестве нового значения:

def sum(value1, value2):
  """This sums two values"""
  sum_of_values = value1 + value2
  return sum_of_values

Из нашей вышеприведенной функции:

  • Имя функции | указывается сразу после ключевого слова def . В круглой скобке сразу после имени
  • функции содержатся параметры функции . Блок кода
  • с отступом в следующей строке (после двоеточия) – это тело функции . Первый оператор в теле
  • функции является строкой документации ( docstring ) функции и является необязательным. Оператор
  • return используется для завершения выполнения функции при возврате указанного значения.

Параметры функции и вызов функции

Функция параметры – это имена, используемые для представления реальных значений, которые предоставляются при вызове функции. Давайте определим вызов функции как запрос на выполнение нашей функции. Чтобы вызвать нашу функцию, нам нужно только написать ее имя, за которым следует скобка. В следующем блоке мы назначим вызов функции переменной. Это означает, что значение нашей переменной будет равно возвращаемому значению нашей функции:

result = sum()
print(result)

Наш приведенный выше код вернется:

TypeError: sum() missing 2 required positional arguments: 'value1' and 'value2'

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

result = sum(5, 6)
print(result)
11

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

#editor
def sum(value1, value2):
  sum_of_values = value1 + value2
  if (sum_of_values > 100):
    return "Too big!"
  return sum_of_values
 
result = sum(90, 32)
print(result)
#console
Too big!

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

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

Оператор возврата

  • Оператор return используется для завершения выполнения функции при возврате указанного значения.

Без использования ключевого слова return для указания нашей функции, что возвращать, ее значением по умолчанию будет None . Давайте проверим это, создав функцию без оператора return , а затем вызвав ее:

#editor
def sum(value1, value2):
  sum_of_values = value1 + value2
 
print(sum(5, 9))
#console
None

Функция также возвращает None по умолчанию, когда ключевое слово return указано без значения. Это делает его пустым возвратом :

#editor
def sum(value1, value2):
  sum_of_values = value1 + value2
  return
print(sum(5, 9))
#console
None

Позиционные аргументы

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

#editor
def sum(value1, value2):
  print("This is value2: " + str(value2))
  print("This is value1: " + str(value1))
  print(sum(90, 32))
#console
This is value2: 32
This is value1: 90
None

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

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

#editor
def sum(value1, value2):
  print("This is value2: " + str(value2))
  print("This is value1: " + str(value1))
  print(sum(value2 = 32, value1=90))
#console
This is value2: 32
This is value1: 90
None

Необходимые аргументы

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

#editor
def sum(value1, value2):
  sum_of_values = value1 + value2
  return sum_of_values
  result = sum(90)
print(result)
# console
TypeError: sum() missing 1 required positional argument: 'value2'

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

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

#editor
def sum(value1, value2=10):
  sum_of_values = value1 + value2
  return sum_of_valueshis
 
result = sum(90)
print(result)
#console
100

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

Когда точное количество аргументов , которые будут предоставлены во время нашего вызова функции , неизвестно, мы можем использовать произвольные аргументы . Чтобы использовать произвольные аргументы, мы добавляем звездочку ( * ) перед именем параметра в нашем определении функции. Это сделает параметр кортежем , и наша функция получит кортеж аргументов для каждого аргумента, предоставленного вместо параметра во время нашего вызова функции :

#editor
def sum_all(*values):
  print("A tuple of all the arguments:", values)
  sum_of_all_values = sum(values)
  return sum_of_all_values
 
result = sum_all(4, 7, 13, 45)
print("The sum of all supplied arguments:", result)
#console
A tuple of all the arguments: (4, 7, 13, 45)
The sum of all supplied arguments: 69

Лямбда-функции Python

Другим способом определения функций в Python является использование ключевого слова lambda . Этот метод определения функций в основном используется для создания анонимных функций ; функций, у которых нет имени, отсюда и слово anonymous . По синтаксису лямбда-функции могут иметь несколько аргументов, но ограничены только одним выражением . Давайте переопределим нашу функцию sum() с помощью ключевого слова lambda :

lambda value1, value2: value1 + value2

Несколько вещей, которые следует отметить:

  • В нашем определении функции нет оператора return . Выражение после столбца ( : ) по умолчанию является возвращаемым значением.
  • Нет никакого способа повторно использовать нашу функцию, так как на нее нельзя ссылаться по имени.

Вы найдете лямбда-функции полезными, когда вам нужно передать функцию в качестве аргумента в функции более высокого порядка . Функции более высокого порядка-это функции, которые работают с другими функциями, либо принимая функцию в качестве аргумента, либо возвращая функцию. Примером функции более высокого порядка является функция map () . В Python функция map принимает в качестве аргументов функцию и список. Это один из случаев, когда нам не нужно, чтобы наша функция была повторно использована, следовательно, необходима функция lambda . Давайте используем функции map() и lambda для возврата половины каждого числа в списке:

#editor
list_of_numbers = [19, 12, 45, 72, 10]
halved_list = list(map(lambda value: value/2 , list_of_numbers)) 

print(halved_list)
#console
halved list: [9.5, 6.0, 22.5, 36.0, 5.0]

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

#editor
sum = lambda value1, value2: value1 + value2
result = sum(7, 9)

print(result)
#console
16

Область действия переменной

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

#editor
def example_function():
  word = "inevitable"
  return word

print(word)
#console
NameError: name 'word' is not defined

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

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

#editor
word = "inevitable"
def example_function():
  return word

print(word)
#console
inevitable

Важные вещи, которые следует отметить

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

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

#editor
def sum(value1, value2):
  sum_of_values = value1 + value2
  return sum_of_values

result = sum(3, 7)
print(result)
#console
IndentationError: expected an indented block

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

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

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

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

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

Функция должна иметь только одну ответственность .

Функция должна иметь только одну |||| ответственность || .

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

Сделав это, вы не только улучшите читаемость кода , но и облегчите его тестирование и отладку.

  • функция – это набор операторов, предназначенных для выполнения определенной задачи.
  • Во время определения функции имена, представляющие значения, которые мы намерены предоставить функции, называются параметры .
  • Во время вызова функции фактические значения , предоставленные функции, вызываются аргументами .
  • Оператор return используется для завершения выполнения функции при возврате указанного значения.
  • Переменные| определенные внутри тела функции , имеют локальную область . Это означает, что доступ к ним возможен только внутри определения функции.
  • Анонимная функция – это функция, у которой нет имени. Чтобы определить анонимную функцию, мы используем ключевое слово
  • lambda , и чтобы иметь возможность повторно использовать анонимную функцию, она должна быть назначена переменной. Имена функций должны быть
  • описательными , прямыми к точке и вневременными . Это хорошая практика, чтобы дать вашей функции только
  • одну ответственность .

Спасибо за чтение! Если у вас все еще есть проблемы с пониманием концепции функций, не беспокойтесь; вот ссылка на Самое простое объяснение функций, которое Вы когда-либо читали .

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

Нашли это полезным? Пожалуйста, оставьте смайлик 💓 , комментарий 📝 и поделитесь! 🎷

Вот мой недавний подкаст о том, как преуспеть в первый год работы инженером-программистом. Я поделился несколькими своими впечатлениями в области технологий и вещами, которые я хотел бы, чтобы кто-то рассказал мне в течение моего первого года работы инженером-программистом: Как преуспеть в свой первый год работы инженером-программистом