Visualisation des Variables Locales dans Spyder Variable Explorer
Je suis nouveau sur python et je suis en utilisant Spyder IDE. Une fonctionnalité que j'apprécie c'est que c'est variable d'explorer. Cependant, d'après quelques recherches, j'ai trouvé qu'il ne montre que des variables globales. Une solution de contournement que j'ai trouvé c'est en utilisant les inspecter module:
import inspect
local_vars = {}
def main():
global local_vars
a = 2
b = 4
c = a+b
local_vars = inspect.currentframe().f_locals
return c
main()
Cela fonctionne bien, cependant, j'ai d'autres fonctions qui sont appelés dans main (), et j'aimerais voir ces variables dans la variable explorer ainsi. J'ai imité ce qui a été fait pour les variables dans la fonction principale et le dict n'apparaît pas. J'ai remarqué que quand je désactive le réglage à "exclure des types de données non pris en charge" dans Spyder variable d'explorer les options, la seconde dict apparaît avec le droit de l'attribut de taille, cependant, je suis incapable d'ouvrir, afficher. Toutes les idées sur la contourner? C'est mon premier temps à poster BTW.
Merci!!
Voici un exemple de mon problème, et j'ai tracé jusqu'à pylab parcelles.
import inspect, pylab
mainVars = {}
def main():
global mainVars
a = 1
b = 2
fig = pylab.figure()
subPlot = fig.add_subplot(211) ## line of interest
pylab.close('all')
mainVars = inspect.currentframe().f_locals
main()
Lorsque la ligne d'intérêt est commenté, le dict est créé et peut être consulté. Il semble que l'objet créé à l'aide de la fig.add_subplot() n'est pas géré correctement par le dict. Il semble être un type de données non pris en charge.
Espère que cela aide à clarifier la question.
Merci encore.
- (Spyder dev ici) s'il vous Plaît poster un exemple qui reflète vraiment ce que vous voulez obtenir à partir de la Variable Explorer, afin que nous puissions le tester et voir ce que nous pourrions faire à ce sujet.
- Appelez-vous ces deux fonctions dans votre code?
- Veuillez consulter la modification faite à mon OP car il a un meilleur exemple et cela montre exactement où se trouve le problème.
- Je peux confirmer ce comportement soit ou non au sein d'une fonction: un dictionnaire contenant une intrigue secondaire instance n'est pas indiqué dans la variable d'explorer si affichant uniquement les types pris en charge.
- Est-il un moyen d'afficher le contenu de la dict malgré l'existence d'un rapport d'objet à l'intérieur d'elle?
- Oui, il existe une solution de contournement. Je l'ai posté ci-dessous comme une réponse. Merci pour l'explication complète, les choses étaient plus claires pour moi alors.
Vous devez vous connecter pour publier un commentaire.
Pour afficher le contenu de variables locales lorsque certains d'entre eux sont pris en charge, vous devez suivre ces étapes:
Allez dans le menu options de la Variable Explorer (la dernière icône de la gauche vers la droite sur elle).
Sélectionnez l'option appelée Exclure des types de données non pris en charge.
Puis, vous verrez toutes les variables locales enregistrées dans le
f_locals
dict, même si vous êtes incapable de vous double-cliquez sur elle.Toutes ces solutions sont de rendre votre code de manière significative beaucoup plus difficile à lire pour les étrangers. Vous avez deux options pour inspecter les valeurs des variables à l'intérieur de votre fonction. Tout d'abord, vous pouvez simplement retourner les variables qui vous intéressent:
Deuxième, si vous voulez juste pour vérifier que la fonction fonctionne comme prévu ou de débogage, vous pouvez déboguer la fonction et l'étape en elle. Donc, choisissez Exécuter|Déboguer dans le menu au lieu d'exécuter le fichier directement. Ensuite, vous pouvez entrer dans la fonction - les valeurs des variables seront visibles dans la variable d'explorer lors de l'exécution à l'intérieur de la fonction.
inspect
code de. Mais il semble que les gens préfère le chemin le plus facile =)2.4
de sorte que tous les types d'objets peuvent être obtenues dans la Variable Explorer.