Maison > développement back-end > Tutoriel Python > Comment puis-je implémenter des variables statiques dans des fonctions Python ?

Comment puis-je implémenter des variables statiques dans des fonctions Python ?

Barbara Streisand
Libérer: 2024-12-05 12:06:12
original
553 Les gens l'ont consulté

How Can I Implement Static Variables in Python Functions?

Implémentation de variables statiques dans les fonctions Python

En Python, imiter le comportement des variables statiques dans les fonctions, comme on le voit dans des langages comme C/C, peut initialement ressembler à une tâche embarrassante. Cependant, il existe plusieurs approches pour obtenir cette fonctionnalité.

Une solution consiste à utiliser l'espace de noms de la fonction elle-même. En attribuant un attribut à l'objet fonction, nous créons effectivement une variable statique dans sa portée. Considérez le code suivant :

def foo():
    foo.counter += 1
    print("Counter is %d" % foo.counter)

foo.counter = 0
Copier après la connexion

Cette approche initialise la variable compteur en dehors de la fonction et l'assigne à l'espace de noms de l'objet fonction. Par conséquent, chaque appel à foo() incrémente le compteur de un, conservant son état même après plusieurs invocations.

Vous pouvez également utiliser une fonction de décorateur pour automatiser la création de variables statiques. Le décorateur suivant, static_vars(), prend les arguments de mots-clés et les définit comme attributs de la fonction décorée :

def static_vars(**kwargs):
    def decorate(func):
        for k in kwargs:
            setattr(func, k, kwargs[k])
        return func
    return decorate
Copier après la connexion

En utilisant ce décorateur, vous pouvez écrire la fonction foo() comme suit :

@static_vars(counter=0)
def foo():
    foo.counter += 1
    print("Counter is %d" % foo.counter)
Copier après la connexion

Le décorateur garantit que la variable compteur est initialisée une fois et reste associée à la fonction foo().

Bien que ces méthodes émulent efficacement les statiques variables au niveau de la fonction, il convient de noter que contrairement à C/C , les fonctions Python ne sont pas liées à une instance d'objet particulière. Par conséquent, le foo. Le préfixe est nécessaire lors de l'accès à la variable statique, car il est toujours associé à l'objet fonction lui-même.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal