La commande display
de pdb semble afficher uniquement une expression lorsque la variable entière est affectée.python3 pdb afficher la liste
pass
foo = [1, 2, 3]
foo[0] = 8
foo.append(7)
pass
La sortie que je reçois lorsque vous exécutez le code ci-dessus avec python3 -m pdb bar.py
, puis en entrant display foo
est:
> bar.py(2)<module>()
-> foo = [1, 2, 3]
(Pdb) display foo
display foo: ** raised NameError: name 'foo' is not defined **
(Pdb) n
> bar.py(3)<module>()
-> foo[0] = 8
display foo: [1, 2, 3] [old: ** raised NameError: name 'foo' is not defined **]
(Pdb)
> bar.py(4)<module>()
-> foo.append(7)
(Pdb)
> bar.py(5)<module>()
-> pass
(Pdb) foo
[8, 2, 3, 7]
(Pdb)
Le NameError et la première sortie de l'affichage sont attendus. Cependant, il semble que l'affichage ne saisit pas que foo
a changé lorsque son premier élément a été modifié ou lorsque nous avons ajouté 7.
Existe-t-il un moyen de dire à pdb de lister ces changements? Il semble que display str(foo)
fait le travail mais je me demande s'il y a une meilleure solution.
Merci pour votre commentaire, mais il ne répond pas entièrement à ma question. Impression imprimerait le contenu de foo même si elle n'a pas changé ce que j'aurais aimé éviter. – jbl
Oh, je vois ... oui, vous avez raison, non. Je posterai un commentaire si quelque chose de mieux va apparaître. Et désolé de répondre au lieu de commenter - ma réputation n'est que de 18 points pour l'instant, je ne peux donc pas commenter les questions des utilisateurs, mais seulement les miennes. Merci pour votre réponse. –