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 −
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'))
tHISISIT! hELLO
Dans cette fonction passée en paramètre. La fonctiondemo3()appelle les fonctionsdemo()etdemo2()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)
tHIS IS IT! This is it!
Parlons maintenant des décorateurs. Nous pouvons utiliser les décorateurs comme fonctions d’ordre supérieur.
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.")
Ce qui précède peut également s'écrire -
def demo_decorator(): print("This is sample text.") hello_decorator = mydecorator (demo_decorator)
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)
Sum = 30
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)
Sum = 30
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)
Sum = 30
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!