【问题标题】:Why does the print function return None?为什么打印函数返回无?
【发布时间】:2015-03-13 14:23:44
【问题描述】:

我试图理解为什么外部print 返回None

>>> a = print(print("Python"))
Python
None
>>> print(type(a))
<class 'NoneType'>

我注意到了:

>>> a = print("hey")
hey
>>> type(a)
<class 'NoneType'>

谁能解释一下这里一般发生了什么?谢谢!

【问题讨论】:

    标签: python python-3.x printing


    【解决方案1】:

    print() 函数返回None。您正在打印该返回值。

    那是因为print() 没有任何to 返回;它的工作是在将参数转换为字符串之后将参数写入文件对象(默认为sys.stdout)。但是 Python 中的所有表达式(包括调用)都会产生一个值,因此在这种情况下会产生 None

    您似乎将打印与返回这里混淆了。 Python 交互式解释器 also 打印;它打印在提示符下直接运行的表达式的结果,前提是它们不产生None

    >>> None
    >>> 'some value'
    'some value'
    

    字符串已回显(打印)到您的终端,而 None 没有。

    由于print() 返回None 但写入相同的输出(您的终端),结果可能看起来相同,但它们是非常不同的操作。我可以让print() 写到别的东西,你不会在终端上看到任何东西:

    >>> from io import StringIO
    >>> output = StringIO()
    >>> print('Hello world!', file=output)
    >>> output.getvalue()
    'Hello world!\n'
    

    print() 函数调用在终端上没有产生输出,并返回了None,然后没有回显。

    【讨论】:

    • print() 打印一个间隙,而不是 None。作为默认参数end
    • @sacma:打印返回不同。
    • 所以print 总是返回None ?
    • 是的。检查文档。
    • @Matthias:print() 函数文档没有明确提到返回 None(因为这是默认值)。
    【解决方案2】:

    函数print来自C语言,选择“by design”使用“0”(零)表示脚本执行成功。此外,所有基于这个概念的项目,如 linux、shell 和 python 语言都使用它来通知方法的“调用者”是否成功执行。

    互联网上最常见的错误是代码 404 - 未找到。 RFC 2616

    更多参考请点击here

    【讨论】:

    • 问题是关于退出代码什么都没问
    猜你喜欢
    • 2021-12-30
    • 2012-01-03
    • 2023-03-09
    • 2022-07-22
    • 2020-01-26
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多