小能豆

为什么打印函数返回 None?

javascript

print为什么这段代码中的outer会显示None

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

为什么这里是abecome None,尽管hey是打印出来的(而不是None)?

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

阅读 47

收藏
2024-07-08

共1个答案

小能豆

在Python中,print函数总是返回None。它的作用是将内容打印到控制台,而不是返回值。让我们逐步解析你的两个例子,以理解为什么会显示None

示例 1

a = print(print("Python"))

分步骤解析:

  1. 内部的 print("Python"): 这个语句会将字符串”Python”打印到控制台,并返回None
  2. 输出:Python
  3. 返回值:None

  4. 外部的 print: 外部的print接收到的是内部print的返回值,即None,并将其打印出来。

  5. 输出:None

因此,外部的print显示None是因为它打印的是内部print的返回值。

变量a被赋值为外部print的返回值,这也是None,因为print函数本身返回None

示例 2

a = print("hey")

分步骤解析:

  1. print("hey"): 这个语句会将字符串”hey”打印到控制台,并返回None
  2. 输出:hey
  3. 返回值:None

因此,变量a被赋值为print("hey")的返回值,即None

NoneType的解释

在这两个示例中,print函数都返回None,因此变量a的类型是NoneType

>>> type(a)
<class 'NoneType'>

总结:

  • print(print("Python"))中,内部的print("Python")打印出”Python”并返回None,外部的print接收这个None并打印出来,所以显示None
  • a = print("hey")中,print("hey")打印出”hey”并返回None,因此变量a被赋值为None

这说明print函数用于打印内容,而不返回其他值,因此每次调用print函数的返回值都是None

2024-07-08