J'ai l'impression que le titre n'est pas le meilleur, alors j'espère pouvoir l'expliquer correctement.

J'ai une liste contenant le nom et l'ordre des variables nécessaires à la sortie.

outVar = ['a', 'b', 'c']

Mais il pourrait contenir différentes variables ou dans un ordre différent

outVar = ['d', 'a', 'c', 'e', 'h', 'f']

Les variables nommées dans la liste ont des valeurs. par exemple:

a = 12

Je souhaite parcourir outVar et imprimer le contenu de la variable. Je pensais pouvoir faire ça comme:

for i in range(len(outVar):
    print(outVar[i])  

Mais cela affiche simplement le nom de la variable. par exemple. a, où je veux 12.

-1
Dan 7 avril 2020 à 20:18

4 réponses

Vous pouvez accéder à la portée avec la fonction locals(), qui vous renverra un dict contenant toutes les variables locales.

local_scope = locals()

for name in outVar:
    print(name, local_scope[name]) 
0
Hollay-Horváth Zsombor 7 avril 2020 à 17:24

Dans votre liste, vous ajoutez les variables sous forme de caractère ou de chaîne en utilisant «a». Supprimez simplement le '' autour des noms de variables dans votre liste comme: outVar = [a, b, c]

0
soLegacy 7 avril 2020 à 17:28

Vous pouvez utiliser un dict à la place, par exemple

outVar = {'a': 12, 'b': 8, ...}

Et changez votre boucle en

for i in outVar.keys():
    print(outVar[i])
0
Badgy 7 avril 2020 à 17:22

Je ne sais pas si vous vous attendez à ça, mais je vais encore essayer

outVar = ['d', 'a', 'c', 'e', 'h', 'f']
d = {'a':12}
[d.get(i,i) for i in outVar]
0
mad_ 7 avril 2020 à 17:30