函数字符串的%和/或格式

时间:2016-03-28 23:39:11

标签: python string function

我正在使用格式来测试Python中的函数。我想要一个函数的输出

hidden

给出

def test(f,k):
    print "{0}({1})={2}".format(f,k,f(k))

test(Sqrt,4)

但格式是回放类型'function'和角括号内的内存地址。是否有一种简洁的方法来缩短输出以获得我想要的东西?

2 个答案:

答案 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是其他类型的可调用对象,则必须以不同的方式处理它,这取决于它是什么类型的可调用以及是否控制其实现。