Maison > développement back-end > Tutoriel Python > Comment puis-je éviter un comportement inattendu avec des paramètres par défaut mutables dans les fonctions Python ?

Comment puis-je éviter un comportement inattendu avec des paramètres par défaut mutables dans les fonctions Python ?

Barbara Streisand
Libérer: 2024-12-08 05:36:10
original
240 Les gens l'ont consulté

How Can I Avoid Unexpected Behavior with Mutable Default Parameters in Python Functions?

Paramètres par défaut à liaison anticipée en Python : éviter les pièges courants

Lorsque vous travaillez avec des paramètres par défaut en Python, il est important d'être conscient du potentiel problèmes causés par une liaison anticipée. Les paramètres par défaut à liaison précoce, comme ceux initialisés dans des structures de données mutables (par exemple, des listes), peuvent se comporter de manière inattendue lorsque la fonction est appelée plusieurs fois.

Considérez l'exemple de fonction suivant :

def my_func(working_list=[]):
    working_list.append("a")
    print(working_list)
Copier après la connexion

Lorsque l'appel de cette fonction pour la première fois initialisera une liste vide comme prévu, les appels suivants mettront à jour la même liste. Cela peut entraîner un comportement inattendu à mesure que la liste s'allonge à chaque appel.

Pour éviter ce problème, il est recommandé de fournir une valeur par défaut Aucun pour les paramètres par défaut mutables et de la vérifier explicitement dans le corps de la fonction. Voici comment modifier l'exemple de fonction :

def my_func(working_list=None):
    if working_list is None:
        working_list = []

    working_list.append("a")
    print(working_list)
Copier après la connexion

En définissant la valeur par défaut sur Aucun et en la testant explicitement, chaque appel à la fonction créera une nouvelle liste vide, garantissant que la fonction fonctionne comme prévu. .

Considérations supplémentaires

Selon les directives PEP 8, l'utilisation est ou non des comparaisons avec Aucun n'est préféré à == ou !=. Cela garantit la clarté et réduit le risque d'erreurs potentielles.

N'oubliez pas de garder ces directives à l'esprit lorsque vous travaillez avec des paramètres par défaut afin d'éviter tout problème imprévu dans votre code.

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