gpt4 book ai didi

Python - 获取全局范围内对象的所有变量名

转载 作者:行者123 更新时间:2023-12-04 21:06:03 31 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Retrieving the list of references to an object in Python

(7 个回答)


4年前关闭。




我会用一个例子来解释:

list_1 = [1, 2, 3]
list_2 = list_3 = list_1 # reference copy

print(magic_method(list_1))
# Should print ['list_1', 'list_2', 'list_3']

set_1 = {'a', 'b'}
print(magic_method(set_1))
# Should print ['set_1']

要求:返回指向同一引用的所有变量的名称。这对python有可能吗?

我正在考虑迭代 globals()locals()等于 id s。有更好的吗?

最佳答案

对于全局变量,您可以执行以下操作:

def magic_method(obj):
return [name for name, val in globals().items() if val is obj]

如果你也想要本地名称,你可以使用 inspect 模块:
def magic_method(obj):
import inspect
frame = inspect.currentframe()
try:
names = [name for name, val in frame.f_back.f_locals.items() if val is obj]
names += [name for name, val in frame.f_back.f_globals.items()
if val is obj and name not in names]
return names
finally:
del frame

进而:
list_1 = [1, 2, 3]
list_2 = list_1

def my_fun():
list_3 = list_1
list_2 = list_1
print(magic_method(list_1))

my_fun()
>>> ['list_3', 'list_1', 'list_2']

关于Python - 获取全局范围内对象的所有变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45672601/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com