gpt4 book ai didi

python - 有一个函数在打印时转换成它的名字

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:48 26 4
gpt4 key购买 nike

我有一个函数数组,但是当我打印这个数组时,我得到了一个非常难看的输出:

[<function f1 at 0x7f708c2bf1b8>, <function f2 at 0x7f708c2bf230>, <function f3 at 0x7f708c2bf2a8>]

是否有一种魔术可以让这些函数具有等效的字符串?像这样的紧凑输出:

[<f1>, <f2>, <f3>]

或者:

['f1', 'f2', 'f3']

最佳答案

已经正在查看等效的字符串;该值由 repr() 生成(始终用于所有容器内容):

>>> def f1(): pass
...
>>> repr(f1)
'<function f1 at 0x10232d320>'

输出是为了调试目的,而不是为了最终用户演示;十六进制地址是该对象的 id(),可帮助您区分其他类似命名的函数。如果你想产生“用户友好”的输出,做你自己的格式。例如,您可以使用列表理解;每个函数对象都有一个 __name__ 属性,您可以为此使用:

['<{}>'.format(func.__name__) for func in list_of_functions]

这仍然是一个列表,所以每个值仍然显示为调试值,但现在是字符串:

>>> list_of_functions = [f1, f2, f3]
>>> ['<{}>'.format(func.__name__) for func in list_of_functions]
['<f1>', '<f2>', '<f3>']

根据需要使用其他字符串技术进一步转换它。使用 str.join() 添加逗号,例如:

>>> ', '.join(['<{}>'.format(func.__name__) for func in list_of_functions])
'<f1>, <f2>, <f3>'

关于python - 有一个函数在打印时转换成它的名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36042430/

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