Je le voulais pour le débogage, alors je l'ai fait moi-même.
En python, il y a une variable intégrée dans l'espace de noms, alors recherchez-la.
(Utilisez les variables d'espace de noms locals () '' et
globals () ''.)
La référence de la variable n'est pas unique, mais la destination de référence de la variable est unique (... n'est-ce pas?).
(Utilisez la fonction d'identifiant ʻid ()
`.)
def getVarsNames( _vars, symboltable ) :
"""
This is wrapper of getVarName() for a list references.
"""
return [ getVarName( var, symboltable ) for var in _vars ]
def getVarName( var, symboltable, error=None ) :
"""
Return a var's name as a string.\nThis funciton require a symboltable(returned value of globals() or locals()) in the name space where you search the var's name.\nIf you set error='exception', this raise a ValueError when the searching failed.
"""
for k,v in symboltable.iteritems() :
if id(v) == id(var) :
return k
else :
if error == "exception" :
raise ValueError("Undefined function is mixed in subspace?")
else:
return error
if __name__ == "__main__":
a = 4
b = "ahoo"
print getVarsNames([a,b,"c"],locals())
Ceci est la valeur de retour.
['a', 'b', None]
qu'en est-il de? Que se passe-t-il si vous appelez à partir de fonctions imbriquées qui se chevauchent?
Postscript: n'hésitez pas à envoyer des exceptions
Recommended Posts