Je ne comprends toujours pas ce que sont first-class functions
. Si je comprends bien, first-class functions
devrait utiliser une fonction comme objet. Est-ce correct?
Est-ce un first-class function
?
def this_is_example(myarg1):
return myarg1
def this_is_another_ example(myarg):
return this_is_example(myarg)+myarg
this_is_another_ example(1)
Une fonction de première classe n'est pas un type particulier de fonction. Toutes les fonctions en Python sont des fonctions de première classe. Dire que les fonctions sont de première classe dans un langage de programmation donné signifie qu'elles peuvent être transmises et manipulées de la même manière que vous feriez passer et manipuler d'autres types d'objets (tels que des entiers ou des chaînes). Vous pouvez affecter une fonction à une variable, la passer sous forme d'argument à une autre fonction, etc. .
Les "fonctions de première classe" (FCF) sont des fonctions traitées comme des "citoyens de première classe" (FCC). Les FCC dans un langage de programmation sont des objets (en utilisant ici le terme "objets" très librement):
En fait, very en gros, les FCF sont des variables du type 'fonction' (ou des variables qui pointent vers une fonction). Vous pouvez faire avec eux tout ce que vous pouvez faire avec une variable «normale».
Sachant cela, les fonctions this_is_another_example(myarg)
et this_is_example(myarg1)
sont des fonctions de première classe, puisque toutes les fonctions/sont de première classe dans certains langages de programmation.
Vous parlez de fonctions d'ordre supérieur - reportez-vous .
Fonctions de première classe: Si une fonction peut être affectée à une variable ou transmise comme objet/variable à une autre fonction, cette fonction est appelée fonction de première classe.
Python, JavaScript et C(pointers) prennent en charge les fonctions de première classe.
Un exemple simple (en python):
def square(x): return x * x
def cube(x): return x * x * x
def print_result(x, func):
"""recieve a function and execute it and return result"""
return func(x)
do_square = square # assigning square function to a variable
do_cube = cube # assigning cube function to a variable
res = print_result(5, do_square) # passing function to another function
print res
res = print_result(5, do_cube)
print res
Ce programme est juste pour illustration.
def pie(r):
def circleArea(d):
return r * (d ** 2)
return circleArea
c = pie(3.14)
print c(2)
Ci-dessus, un exemple de fonction de première classe en python.
Fonctions First Class en Python
Les objets de première classe dans une langue sont traités de manière uniforme. Ils peuvent être stockés dans des structures de données, passés sous forme d'arguments ou utilisés dans des structures de contrôle. On dit qu'un langage de programmation prend en charge des fonctions de première classe s'il traite les fonctions comme des objets de première classe. Python supporte le concept de fonctions de première classe.
Propriétés des fonctions de première classe:
Une fonction est une instance du type Object.
- Vous pouvez stocker la fonction dans une variable. - Vous pouvez transmettre la fonction en tant que paramètre à une autre fonction. - Vous pouvez retourner la fonction d'une fonction. - Vous pouvez les stocker dans des structures de données telles que des tables de hachage, des listes,…
Exemples illustrant les fonctions de première classe en Python
1. Les fonctions sont des objets: les fonctions Python sont des objets de première classe. Dans l'exemple ci-dessous, nous affectons une fonction à une variable. Cette affectation n’appelle pas la fonction. Il prend l'objet fonction référencé par shout et crée un deuxième nom qui le désigne, yell.
# Python program to illustrate functions
# can be treated as objects
def shout(text):
return text.upper()
print shout('Hello')
yell = shout
print yell('Hello')
Sortie:
BONJOUR
BONJOUR
# Python program to illustrate functions
# can be passed as arguments to other functions
def shout(text):
return text.upper()
def whisper(text):
return text.lower()
def greet(func):
#storing the function in a variable
greeting = func("Hi, I am created by a function passed as an argument.")
print greeting
greet(shout)
greet(whisper)
Sortie:
HI, JE SUIS CRÉÉ PAR UNE FONCTION RÉPÉTÉE EN ARGUMENT.
Bonjour, je suis créé par une fonction passée en argument.
#Python program to illustrate functions
#Functions can return another function
def create_adder(x):
def adder(y):
return x+y
return adder
add_15 = create_adder(15)
print add_15(10)
Sortie:
25
Chaque fonction en python est de première classe, car elle peut être transmise comme n'importe quel autre objet.