如何将可调用对象打印为字符串?

Chr*_*ris 4 python

我想应该已经有这样的问题了,但是我还没有找到。这可能是因为我不知道我正在寻找的确切概念/单词,但这里是一个例子:

我有这个代码:

group_1 = ['Hello', 'world', '!']
group_2 = [1,23,4,2,5,2]
group_3 = ['A', 'K', 'L']

all_groups = [group_1, group_2, group_3]
for i in all_groups:
    print(i, ':', len(i))
Run Code Online (Sandbox Code Playgroud)

它给出了这个输出:

['Hello', 'world', '!'] : 3
[1, 23, 4, 2, 5, 2] : 6
['A', 'K', 'L'] : 3
Run Code Online (Sandbox Code Playgroud)

这是预期的输出:

'group_1' : 3
'group_2' : 6
'group_3' : 3
Run Code Online (Sandbox Code Playgroud)

group_1正如您所看到的,我正在尝试打印可调用对象、group_2和 的名称group_3。有什么建议么?

Bro*_*ark 5

重构您的代码,以便它使用字典来存储组名称。

我不会推荐使用与反射、inspect模块或locals()评论中描述(或链接)相关的任何内容的方法。all_groups当您将列表中的变量添加到 时,不会保留它们的名称all_groups;即使是,访问这些名称也可能比仅使用字典更复杂:

data = {
    'group_1': ['Hello', 'world', '!'],
    'group_2': [1,23,4,2,5,2],
    'group_3': ['A', 'K', 'L']
}

for k, v in data.items():
    print(k, ':', len(v))
Run Code Online (Sandbox Code Playgroud)

这输出:

group_1 : 3
group_2 : 6
group_3 : 3
Run Code Online (Sandbox Code Playgroud)