【问题标题】:Correct terminology for result echoed when function printed in Python在 Python 中打印函数时回显结果的正确术语
【发布时间】:2018-02-21 16:00:18
【问题描述】:

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

例如。

def func():
    pass

print(func)

返回:

<function func at 0x7f5f539587b8>

这个结果叫什么?另一个例子是&lt;class '__main__.a'&gt;

特别感谢能告诉我这些结果是否也可以用于某事的好心人。

【问题讨论】:

    标签: python python-2.7 python-3.x terminology


    【解决方案1】:

    这是对象的“字符串表示”。这基本上是 Python 可以用字符串表示对象的最佳方式。

    在第一种情况下,Python 告诉您,套用一下的话,“这是一个名为 'func' 的函数,位于内存位置 0x7f5f539587b8”。这是它可以为您提供的最好的字符串表示形式,而无需您提供更好的表示形式。

    在第二种情况下,Python 告诉您,“这是一个名为 'a' 的类,它位于 'ma​​in' 模块的命名空间中。

    您可以通过定义类的 __repr__ 特殊方法来修改此值。 __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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 2018-10-18
      相关资源
      最近更新 更多