2012-04-20 5 views
2

Locals() est un dict. Si je fais simplePython: recherche des types de clés dans les locals()

for i in locals().keys(): 
    type(i) 

Ce qui est retourné est qu'ils sont toutes les chaînes (oui, en fait, ils sont), mais ces clés indiquent différents types - on pourrait être, par exemple, un module. Certains types de références (objets) mais aussi des types primitifs (par exemple int, string).

Dans un certain sens, je veux extraire le nom de la chaîne. Regardé comment faire cela avec les attributs sur une chaîne, mais pas aller. Je crois que j'ai besoin de quelque chose de l'introspection, mais quoi?

Répondre

2

locals().keys() renvoie tous les noms de variables liés dans l'espace local. Comme ce sont des noms, ce sont toutes des chaînes. (En Python 2.x vous pouvez utiliser locals().iterkeys() pour cela aussi, pour obtenir un itérateur.)

Essayez plutôt locals().values() à la place. Pour Python 2.x, vous pouvez utiliser locals().itervalues() pour obtenir un itérateur.

ou locals().items() pour obtenir key, value paires. Pour Python 2.x, vous pouvez utiliser locals().iteritems() pour obtenir un itérateur.

+1

Ou 'locals(). Items()' pour obtenir le nom et la valeur (pratique si vous voulez imprimer par le nom et le type). – kindall

+0

thanks - locals(). Values ​​() a fait l'affaire et j'ai donc appris une nouvelle chose ou deux dans le processus. – patfla

+0

Salut. Pycharm me dit que 'l'inspection de la compatibilité du code' est préoccupé par les locals(). Iteritems(). Des idées pour corriger? – user2678074

Questions connexes