python变量名包括_Python – 获取全局范围内对象的所有变量名

我将用一个例子来解释:

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的行.有更好的吗?

最佳答案 对于全局变量,您可以:

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']


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部