我正在使用格式来测试Python中的函数。我想要一个函数的输出
hidden
给出
def test(f,k):
print "{0}({1})={2}".format(f,k,f(k))
是
test(Sqrt,4)
但格式是回放类型'function'和角括号内的内存地址。是否有一种简洁的方法来缩短输出以获得我想要的东西?
答案 0 :(得分:4)
您希望使用__name__
:
def test(f,k):
print("{0}({1})={2}".format(f.__name__,k,f(k)))
test(sqrt, 2)
输出:
sqrt(2)=1.4142135623730951
在数据模型文档here的“可调用类型”部分中,__name__
只是:
__name__ func_name : The function’s name.
在想要使用这些类型的属性时,请仔细阅读文档以了解可用的。通常,这将适用于 callable 类型(例如,在定义方法或类时,__name__
属性将可供您使用)。但是如果你只是定义一个不可调用的东西,比如:
x = 5
并尝试致电x.__name__
,您将会遇到AttributeError
答案 1 :(得分:2)
与Python中的大多数对象不同,函数的__name__
属性设置为定义它们的名称。你可以使用它:
print "{0}({1})={2}".format(f.__name__, k, f(k))
类也有__name__
,但大多数其他callables没有。如果f
是其他类型的可调用对象,则必须以不同的方式处理它,这取决于它是什么类型的可调用以及是否控制其实现。