Maison > développement back-end > Tutoriel Python > Comment créer des fonctions d'ordre supérieur en Python ?

Comment créer des fonctions d'ordre supérieur en Python ?

PHPz
Libérer: 2023-09-05 19:29:05
avant
1344 Les gens l'ont consulté

Comment créer des fonctions dordre supérieur en Python ?

En Python, une fonction qui prend une autre fonction comme argument ou renvoie une fonction en sortie est appelée une fonction d'ordre supérieur. Jetons un coup d'œil à ses fonctionnalités -

  • La fonction peut être stockée dans une variable.

  • Cette fonction peut être passée en paramètre à une autre fonction.

  • Les fonctions d'ordre supérieur peuvent être stockées dans des listes, des tables de hachage, etc.

  • Les fonctions peuvent être renvoyées par les fonctions.

Regardons quelques exemples −

Fonctionner comme objet

La traduction chinoise de

Exemple

est :

Exemple

Dans cet exemple, ces fonctions sont traitées comme des objets. Ici, la fonction demo() est affectée à une variable -

# Creating a function
def demo(mystr):
   return mystr.swapcase() # swapping the case

print(demo('Thisisit!'))
sample = demo
print(sample('Hello'))
Copier après la connexion

Sortie

tHISISIT!
hELLO
Copier après la connexion

Fonction Passer en paramètre

La traduction chinoise de

Exemple

est :

Exemple

Dans cette fonction passée en paramètre. La fonction demo3() appelle les fonctions demo() et demo2() comme paramètres.

def demo(text):
   return text.swapcase()

def demo2(text):
   return text.capitalize()

def demo3(func):
   res = func("This is it!") # Function passed as an argument
   print (res)

# Calling
demo3(demo)
demo3(demo2)
Copier après la connexion

Sortie

tHIS IS IT!
This is it!
Copier après la connexion

Parlons maintenant des décorateurs. Nous pouvons utiliser les décorateurs comme fonctions d’ordre supérieur.

Décorateurs en Python

La traduction chinoise de

Exemple

est :

Exemple

Dans un décorateur, une fonction est passée en paramètre à une autre fonction puis appelée dans la fonction wrapper. Regardons un exemple rapide −

@mydecorator
def hello_decorator():
   print("This is sample text.")
Copier après la connexion

Ce qui précède peut également s'écrire -

def demo_decorator():
   print("This is sample text.")
hello_decorator = mydecorator (demo_decorator)
Copier après la connexion

Exemple de décorateur

La traduction chinoise de

Exemple

est :

Exemple

Dans cet exemple, nous travaillerons avec les décorateurs en tant que fonctions d'ordre supérieur -

def demoFunc(x,y):
   print("Sum = ",x+y)

# outer function
def outerFunc(sample):
   def innerFunc(x,y): # inner function
      return sample(x,y)
   return innerFunc

# calling
demoFunc2 = outerFunc(demoFunc)
demoFunc2(10, 20)
Copier après la connexion
Copier après la connexion

Sortie

Sum = 30
Copier après la connexion
Copier après la connexion
Copier après la connexion
La traduction chinoise de

Exemple

est :

Exemple

def demoFunc(x,y):
   print("Sum = ",x+y)

# outer function
def outerFunc(sample):
   def innerFunc(x,y): # inner function
      return sample(x,y)
   return innerFunc

# calling
demoFunc2 = outerFunc(demoFunc)
demoFunc2(10, 20)
Copier après la connexion
Copier après la connexion

Sortie

Sum = 30
Copier après la connexion
Copier après la connexion
Copier après la connexion

Appliquer le décorateur de syntaxe

La traduction chinoise de

Exemple

est :

Exemple

L'exemple ci-dessus peut être simplifié en utilisant un décorateur avec @symbol. L'application des décorateurs peut être simplifiée en plaçant le symbole @ devant la fonction que l'on souhaite décorer -

# outer function
def outerFunc(sample):
   def innerFunc(x,y): # inner function
      return sample(x,y)
   return innerFunc

@outerFunc
def demoFunc(x,y):
   print("Sum = ",x+y)

demoFunc(10,20)
Copier après la connexion

Sortie

Sum = 30
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal