J'ai la fonction ci-dessous, je veux juste retourner "list_" à partir de cela, je n'ai pas pu y parvenir cependant. Toute aide serait appréciée.
import inspect
def f(*x, **y):
_,_,_,lo=inspect.getargvalues(inspect.currentframe())
print(list(lo.values()))
list_=[1,2,3,4]
f(list_)
Vous pouvez parcourir vos variables globales stockées dans globals()
et renvoyer le nom de la variable dont la valeur est égale à l'argument fourni en tant que x[0]
. Ici, nous utilisons next()
pour arrêter l'itération globals()
et retourner notre valeur dès que nous trouvons notre correspondance.
def f(*x, **y):
return next(i for i in globals() if globals()[i] == x[0])
list_ = [1,2,3,4]
print(f(list_)) # -> "list_"
Ou en utilisant inspect
def f(*x, **y):
callers_local_vars = inspect.currentframe().f_back.f_locals.items()
return next(var_name for var_name, var_val in callers_local_vars if var_val is x[0])
print(f(list_)) # -> "list_"
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots