457 votes

Qu'est-ce qu'un équivalent Python de var_dump () de PHP?

Lors du débogage en PHP, j’ai souvent trouver utile de simplement coller une fonction var_dump() dans mon code pour me montrer ce qu’une variable est, quelle est sa valeur et le même pour tout ce qu’il contient.

Ce qui est un bon Python équivalent pour cela ?

339voto

Jan Points 1651

Je pense que le meilleur équivalent à PHP `` est :

305voto

Martin v. Löwis Points 61768

Pour afficher une valeur bien, vous pouvez utiliser le module pprint . La meilleure façon de vider toutes les variables avec c’est de faire

Si vous fonctionnez en CGI, une fonctionnalité de débogage utile est le module cgitb , qui affiche la valeur des variables locales dans le cadre de la vérification.

64voto

Hai Phaikawl Points 402

La chose la plus proche de PHPest avec le fonction dans la fonction intégrée module :

25voto

Cody Casterline Points 571

PHP var_export() montre habituellement une version sérialisée de l’objet qui peut être exec () dû recréer l’objet. La chose la plus proche à celui en Python est repr()

« Pour de nombreux types, cette fonction fait une tentative pour retourner une chaîne qui produirait un objet ayant la même valeur lorsqu’il est passé à eval() [...] »

16voto

Zoredache Points 8873

J'ai donc pris les réponses de cette question et une autre question et est venu ci-dessous. J'imagine que ce n'est pas pythonic suffisant pour la plupart des gens, mais je voulais vraiment quelque chose qui me permettre d'obtenir une profondeur de représentation des valeurs de l'inconnue de la variable. J'aimerais avoir des suggestions sur comment je peux améliorer cette ou obtenir le même comportement plus facile.

def dump(obj):
  '''return a printable representation of an object for debugging'''
  newobj=obj
  if '__dict__' in dir(obj):
    newobj=obj.__dict__
    if ' object at ' in str(obj) and not newobj.has_key('__type__'):
      newobj['__type__']=str(obj)
    for attr in newobj:
      newobj[attr]=dump(newobj[attr])
  return newobj

Ici est l'utilisation

class stdClass(object): pass
obj=stdClass()
obj.int=1
obj.tup=(1,2,3,4)
obj.dict={'a':1,'b':2, 'c':3, 'more':{'z':26,'y':25}}
obj.list=[1,2,3,'a','b','c',[1,2,3,4]]
obj.subObj=stdClass()
obj.subObj.value='foobar'

from pprint import pprint
pprint(dump(obj))

et les résultats.

{'__type__': '<__main__.stdClass object at 0x2b126000b890>',
 'dict': {'a': 1, 'c': 3, 'b': 2, 'more': {'y': 25, 'z': 26}},
 'int': 1,
 'list': [1, 2, 3, 'a', 'b', 'c', [1, 2, 3, 4]],
 'subObj': {'__type__': '<__main__.stdClass object at 0x2b126000b8d0>',
            'value': 'foobar'},
 'tup': (1, 2, 3, 4)}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X