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

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

Linda Hamilton
Libérer: 2024-12-15 14:08:10
original
536 Les gens l'ont consulté

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

Éviter les problèmes liés aux paramètres par défaut dans Python

Lorsque vous travaillez avec les paramètres par défaut de Python, certaines complexités peuvent survenir, notamment avec les arguments mutables. Pour éviter ces problèmes, il est crucial de traiter le comportement du paramètre par défaut.

Par exemple, considérons la fonction suivante :

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

Lors de l'appel initial, le paramètre par défaut de la liste vide fonctionne comme prévu . Cependant, les appels ultérieurs entraînent un comportement inattendu où le paramètre par défaut, une liste vide initialement, conserve les éléments ajoutés des exécutions précédentes.

Pour résoudre ce problème et créer une nouvelle liste vide à chaque appel de fonction, Python propose deux approches :

1. Test pour Aucun :

def my_func(working_list=None):</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if working_list is None: 
    working_list = []
working_list.append("a")
print(working_list)
Copier après la connexion

2. Affectation conditionnelle :

def my_func(working_list=None):</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">working_list = [] if working_list is None else working_list
working_list.append("a")
print(working_list)
Copier après la connexion

Les deux solutions garantissent qu'un nouveau la liste vide est initialisée avant d'y ajouter des éléments, isolant ainsi chaque appel de fonction et empêchant l'accumulation de données des précédents exécutions.

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
Article précédent:Pourquoi pytz affiche-t-il des décalages de fuseau horaire inattendus et comment puis-je les gérer correctement ? Article suivant:Comment puis-je créer efficacement des pipelines multi-processus en Python à l'aide de « subprocess.Popen » ?
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
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal