Функциями высшего порядка python

Все о функциях высшего порядка в Python

Во-первых, давайте начнем с первого, т. е. с функций высшего порядка, и разберемся в их основах.

Что такое функции высшего порядка в Python?

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

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

Свойства

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

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

Способы определения

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

Читайте также:  Python operators as functions

Ниже приведены способы определения функций высшего порядка в коде Python:

  1. Использование функций как объектов в функции высшего порядка.
  2. Функции как параметр для другой функции.
  3. Возврат функции как результат функции высшего порядка.
  4. Декораторы как функции высшего порядка.

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

Метод 1: использование функций как объектов в функции высшего порядка

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

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

# a default function to take another function parameter def spell(text): # Making text in upper return text.upper() # Taking text as user input text = input("Enter a text to print it in uppercase and double: ") # Spell function with text print(spell(text)) # Assigning variable with the default function scream = spell # Scream with text variable print(scream(text))
Enter a text to print it in uppercase and double: JavaTPoint JAVATPOINT JAVATPOINT

Метод 2: Функции как параметр для другой функции

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

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

# Default function for making text uppercase def scream(word): return word.upper() # Default function for making text lowercase def spell(word): return word.lower() # A third function that work as a high order function def speak(funct): # Storing the function in a variable in high order function speaking = funct("Hello Python Developers! You are welcomed to JavaTpoint") print(speaking) # Printing text in uppercase speak(scream) # Printing text in lowercase speak(spell)
HELLO PYTHON DEVELOPERS! YOU ARE WELCOMED TO JAVATPOINT hello python developers! you are welcomed to javatpoint

Метод 3: возврат функции как результат функции высшего порядка

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

# A default function for addition def Adding(a): # Nested function with second number def Addition(b): return a + b # addition of two numbers return Addition # Result # Taking both number variable as user input a = int(input("Enter First Number: ")) b = int(input("Enter Second Number: ")) # Assigning nested adding function to a variable AddVariable = Adding(a) # Using variable as high order function Result = AddVariable(b) # Printing result print("Sum of Two numbers given by you is: ", Result)
Enter First Number: 24 Enter Second Number: 26 Sum of Two numbers given by you is: 50

Метод 4: декораторы как функции высшего порядка

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

Читайте также:  Php get host info

В декораторах Python функция берется в качестве аргумента для другой функции, а затем эти декораторы вызываются внутри функции-обертки. Взгляните на следующий пример синтаксиса декоратора, определенного в программе Python.

# Using a decorator @JTP_Decorator def Python_Decorator(): . .

Приведенный выше синтаксис для декоратора эквивалентен следующему коду Python для функции высшего порядка.

# Using Python default function as Python decorators def Python_Decorator(): . . Python_Decorator = @JTP_Decorator(Python_Decorator)

Мы упомянули @JTP_Decorator как вызываемую функцию внутри функции Python_Decorator() по умолчанию в приведенном выше коде. Нам нужно будет добавить дополнительный код в эту структуру, и мы получим в результате функцию-оболочку.

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

# Using default function as Python decorators def Python_Decorator(funct): # Inner nested function def inner(): print("This line of code will be printed before the execution of high order function") funct() print("This line of code will be printed after the execution of high order function") return inner # A default function as decorator def JTP_Decorator(): print("This line of code will be printed inside the execution of high order function") JTP_Decorator = Python_Decorator(JTP_Decorator) # Python decorator as high order function # Python decorator calling out as high order function JTP_Decorator()
This line of code will be printed before the execution of high order function This line of code will be printed inside the execution of high order function This line of code will be printed after the execution of high order function

Источник

Оцените статью