Exécuter une fonction une seule fois en Python

Exécuter une fonction une seule fois en Python #

Pour exécuter une fonction une seule fois :

  1. Déclarez une variable globale et initialisez-la à False.
  2. Changez la valeur de la variable globale en True dans la fonction.
  3. N’exécutez le code de la fonction que si la variable globale a pour valeur False.

sum_has_run = False


def sum(a, b):
    global sum_has_run

    if sum_has_run:
        return

    sum_has_run = True

    return a + b


print(sum(100, 100))  

print(sum(100, 100))  





def sum(a, b):
    if getattr(sum, 'has_run', False):
        return

    sum.has_run = True

    return a + b


print(sum(100, 100))  

print(sum(100, 100))  

Le premier exemple utilise une variable globale pour exécuter une fonction une seule fois.

Nous initialisons la variable globale à False et définissons sa valeur à True dans la fonction.

Si la valeur de la variable globale est égale à Truenous retournons directement de la
fonction directement.

sum_has_run = False


def sum(a, b):
    global sum_has_run

    if sum_has_run:
        return

    sum_has_run = True

    return a + b


print(sum(100, 100))  

print(sum(100, 100))  

Si la valeur de la variable globale n’est pas égale à Truenous lui donnons la valeur suivante True et exécutons la fonction.

Cela ne se produit que la première fois que la fonction est invoquée.

Une fois que la variable globale est définie sur Truela fonction renvoie None sans
exécuter aucun code.

Une autre approche consiste à utiliser un attribut sur la fonction.

Pour exécuter une fonction une seule fois :

  1. Définir un has_run sur la fonction pour True la première fois qu’elle est exécutée.
  2. A chaque fois que la fonction est appelée, vérifiez si la fonction has_run est True
    et revenir immédiatement.
  3. Le code de la fonction ne s’exécutera que la première fois.
def sum(a, b):
    if getattr(sum, 'has_run', False):
        return

    sum.has_run = True

    return a + b


print(sum(100, 100))  

print(sum(100, 100))  

Nous avons défini le has_run à l’attribut True la première fois que la fonction est appelée.

La fonction getattr
renvoie la valeur de l’attribut fourni de l’objet.

La fonction prend comme paramètres l’objet, le nom de l’attribut et une valeur par défaut pour le cas où l’attribut n’existe pas sur l’objet.
lorsque l’attribut n’existe pas sur l’objet.

Si la fonction has_run n’est pas défini sur la fonction, nous retournons une valeur par défaut
de False.

Nous vérifions la valeur de l’élément has_run à chaque fois que la fonction s’exécute et si sa valeur est fixée à Truenous revenons directement de la fonction.

Si le has_run n’est pas défini, le code de la fonction s’exécute et définit l’attribut
l’attribut à True.

Le code de la fonction n’est exécuté qu’une seule fois.

Laisser un commentaire