代码之家  ›  专栏  ›  技术社区  ›  Alexander Findlay

在Python中打印函数时,返回正确的结果术语

  •  2
  • Alexander Findlay  · 技术社区  · 7 年前

    我知道这可能在文档中的某个地方,但要反向搜索有点困难。当我们明确 print 一个函数(不是调用它),回显结果的名称是什么?

    如。

    def func():
        pass
    
    print(func)
    

    <function func at 0x7f5f539587b8>
    

    这个结果叫什么?另一个例子是 <class '__main__.a'> .

    1 回复  |  直到 7 年前
        1
  •  2
  •   Dewald Abrie    7 年前

    在第一种情况下,Python告诉您,换言之,“这是一个名为‘func’的函数,位于内存位置0x7F539587B8”。这是它可以提供的最好的字符串表示法,而无需提供更好的表示法。

    在第二个例子中,Python告诉您,“这是一个名为'a'的类,它位于' 主要的 '模块的名称空间。

    您可以通过定义类的特殊方法来修改此值__repr__;给出了“正式表示”,str________________________________。看见 this 了解更多详细信息。

    例如:

    class A:
        def __init__(self, unique_name):
            self.unique_name = unique_name
    
        def __repr__(self):
            return "object of type A and name %s in the name-space of %s" \
                   % (self.unique_name, __name__)
    
    a = A('foo')
    print(a)
    
    class B:
        pass
    
    b = B()
    print(b)
    

    object of type A and name foo in the name-space of __main__
    <__main__.B object at 0x7ffb9eb37668>