【问题标题】:Why typing None in interactive Python prints nothing? [duplicate]为什么在交互式 Python 中键入 None 什么也不打印? [复制]
【发布时间】:2023-11-01 06:36:01
【问题描述】:

python 以交互方式启动时,它将评估[] 之类的表达式并打印转换为字符串的结果或执行i = 1 之类的语句。由于语句没有值,如果它们不向终端写入任何内容,则不会打印任何内容。然而,当我输入None 作为表达式时,Python 什么也不打印,甚至'None' 也不打印。乍一看,我以为repr(None) 会返回一个空字符串,但我错了。那么,为什么 Python 不打印任何内容来使用 None 来创建一个特殊情况呢?

>>> None
>>>
>>> repr(None)
'None'
>>> str(None)
'None'

【问题讨论】:

    标签: python interactive repr


    【解决方案1】:

    在交互模式下,任何表达式语句的结果在不是None 时打印。此行为在doc 中进行了描述。

    表达式语句用于(主要是交互地)计算和写入一个值 [...]

    交互模式下,如果值不是None,则转换为 使用内置repr() 函数的字符串,结果字符串为 写入标准输出

    原因是大多数有副作用的函数都返回None。在控制台中发送None 垃圾邮件会很烦人。

    >>> lst.append(1)
    None
    >>> lst.append(2)
    None
    >>> lst.append(3)
    None
    >>> print('Please stop...')
    Please stop...
    None
    

    【讨论】:

    • 快乐的例子。
    • 为我带来我错过的文档的好镜头。
    • @cgsdfc 是的,这方面的文档其实隐藏在 Python 的语法规范中,第一次可能很难找到。
    【解决方案2】:

    因为否则所有不返回任何内容的函数调用都会打印None

    【讨论】:

    • 很好的理由。我可以说如果python发现要打印的结果是None,它只是跳过打印一个提示?
    最近更新 更多