web-dev-qa-db-fra.com

Quelle est la fonction de première classe en Python

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)
15
rwrwerwer

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. .

25
BrenBarn

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):

  • Peut être utilisé comme paramètre
  • Peut être utilisé comme valeur de retour
  • Peut être assigné à des variables
  • Peut être stocké dans des structures de données telles que des tables de hachage, des listes, ...

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.

11
Timusan

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.

4
Nelson Sequiera
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.

1
MHK

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

  1. Les fonctions peuvent être transmises en tant qu'arguments à d'autres fonctions: Les fonctions étant des objets, nous pouvons les transmettre en tant qu'arguments à d'autres fonctions. Les fonctions pouvant accepter d'autres fonctions en tant qu'arguments sont également appelées fonctions d'ordre supérieur. Dans l'exemple ci-dessous, nous avons créé une fonction saluer qui prend une fonction en tant qu'argument.


    # 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.

  1. Les fonctions peuvent renvoyer une autre fonction: Les fonctions étant des objets, nous pouvons renvoyer une fonction d'une autre fonction. Dans l'exemple ci-dessous, la fonction create_adder renvoie la fonction additionneur.


    #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

0
shanu khera

Chaque fonction en python est de première classe, car elle peut être transmise comme n'importe quel autre objet.

0
f.rodrigues