Précautions lors de l'utilisation d'une liste ou d'un dictionnaire comme argument par défaut

Notez que les listes et les dictionnaires sont passés par référence

def test_func(x, l=[]):
    l.append(x)
    return l


r = test_func(100)
print(r)

r = test_func(100)
print(r)

J'aurais dû créer une liste vide comme argument par défaut ...

[100]
[100, 100]

Pour améliorer, procédez comme suit

def test_func(x, l=None):
    if l is None:
        l = []
    l.append(x)
    return l


r = test_func(100)
print(r)

r = test_func(100)
print(r)

production:

[100]
[100]

Recommended Posts

Précautions lors de l'utilisation d'une liste ou d'un dictionnaire comme argument par défaut
Extraire la valeur de dict ou list sous forme de chaîne de caractères
Précautions lors de l'utilisation de la fonction urllib.parse.quote
Si vous donnez une liste avec l'argument par défaut de la fonction ...
Utilisez le module de papier électronique comme liste de tâches
N'y a-t-il pas une valeur par défaut dans le dictionnaire?
Ne spécifiez pas un objet mutable (type de liste, type de dictionnaire, etc.) comme valeur initiale de l'argument de fonction de python.
J'ai vérifié la vitesse de référence lors de l'utilisation de la liste python, du dictionnaire et du type de jeu.
Une simple différence lors du passage d'un pointeur comme argument de fonction
Précautions lors de l'utilisation de Chainer
Créer une liste lorsque la nomenclature est pour une certaine période de temps
Rechercher la table à l'aide de sqlalchemy et créer un dictionnaire
Une histoire à laquelle j'étais accro en spécifiant nil comme argument de fonction dans Go
Problèmes lors de l'utilisation d'Elasticsearch comme source de données dans Redash
Module Ansible Comment mettre la chaîne de caractères JSON passée en paramètre dans le dictionnaire lors de l'écriture
Soyez prudent lorsque vous spécifiez la valeur d'argument par défaut dans la série Python 3
Précautions lors de la création d'un tableau à deux dimensions avec toutes les mêmes valeurs
L'histoire de l'erreur de hachage est apparue lors de l'utilisation de Pipenv
Utilisation de lambda (lors du passage d'une fonction comme argument d'une autre fonction)
Essayez d'utiliser Elasticsearch comme base de votre système de questions et réponses
Extension de Python par C ou C ++ (lorsqu'il y a plusieurs arguments, lors du passage d'une liste du côté Python)
L'histoire de la création d'un slackbot qui génère un gif ou un png lorsque vous envoyez le code de traitement
Un mémorandum lors de l'utilisation d'une belle soupe
Précautions lors de l'utilisation de Pit avec Python
Précautions lors de l'héritage de la classe DatasetMixin
Précautions lors de l'utilisation de l'analyse des traits TextBlob
Créer un dictionnaire imbriqué à l'aide de defaultdict
Précautions lors de l'utilisation de codecs et de pandas
Précautions lors de la création d'un générateur Python
Lors de la création d'une matrice dans une liste
Précautions lors de l'utilisation de phantomjs de python
Précautions lors de l'utilisation de six avec Python 2.5
Poussez la liste de hachage dans VT et recevez le résultat de la détection sous forme de liste
Une note utile lors de l'utilisation de Python après une longue période