为什么打印功能返回无?

发布于 2021-01-29 19:33:55

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

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

我注意到:

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

有人能解释一下这里发生的一切吗?谢谢!

关注者
0
被浏览
116
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

    您似乎将打印与返回此处混淆了。Python交互式解释器 也会 打印;如果不产生,它将打印直接在提示符下运行的表达式的结果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该输出,然后未回显。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看