【问题标题】:% and/or format for function string [duplicate]函数字符串的百分比和/或格式[重复]
【发布时间】:2016-07-16 08:12:34
【问题描述】:

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

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

给定

test(Sqrt,4)

成为

Sqrt(4)=2

但是格式会返回类型“函数”和尖括号内的内存地址。有没有一种巧妙的方法来缩短输出以获得我想要的东西?

【问题讨论】:

    标签: python string function


    【解决方案1】:

    您希望使用__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

    【讨论】:

      【解决方案2】:

      与 Python 中的大多数对象不同,函数的 __name__ 属性设置为定义它们的名称。你可以使用它:

      print "{0}({1})={2}".format(f.__name__, k, f(k))
      

      类也有__name__,但大多数其他可调用对象没有。如果f 是其他类型的可调用对象,则您必须以不同的方式处理它,具体方式取决于它是什么类型的可调用对象以及您是否控制其实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-07
        • 1970-01-01
        • 2016-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多