lzb1001 发表于 2023-5-21 01:08:36

请大神解答

def funIn():
        print('宾果!你成功访问到我啦!')
>>> funIn() # 可打印输出
宾果!你成功访问到我啦!
>>> x = funIn() # 可打印输出
宾果!你成功访问到我啦!
>>> x # 为何不会打印输出?
>>> print(x) # 为什么必须通过print()才可打印输出,而且输出的还是None?
None

歌者文明清理员 发表于 2023-5-21 01:09:32

在Python中,如果一个函数没有使用return语句返回任何值,则这个函数将会返回一个特殊的值 None。因此,当你在赋值语句中调用这个函数时(例如 x = funIn()),变量 x 将会被赋值为 None。

当你直接输入变量 x 时,解释器并不会在控制台中打印出 None 值,而只是简单地跳过这个语句。

如果你想在控制台中输出变量 x 的值,必须使用 print() 函数将其明确地打印到屏幕上,就像你在最后一行的操作一样。

lzb1001 发表于 2023-5-21 01:33:45

歌者文明清理员 发表于 2023-5-21 01:09
在Python中,如果一个函数没有使用return语句返回任何值,则这个函数将会返回一个特殊的值 None。因此,当 ...

因为:

……因此,当你在赋值语句中调用这个函数时(例如 x = funIn()),变量 x 将会被赋值为 None。

当你直接输入变量 x 时,解释器并不会在控制台中打印出 None 值,而只是简单地跳过这个语句。

所以:

>>> x # 没有任何内容返回

那为何:

>>> x = funIn() # 又可打印输出?
宾果!你成功访问到我啦!

歌者文明清理员 发表于 2023-5-21 01:34:52

lzb1001 发表于 2023-5-21 01:33
因为:

……因此,当你在赋值语句中调用这个函数时(例如 x = funIn()),变量 x 将会被赋值为 None。 ...

在执行赋值语句 x = funIn() 时,首先会调用函数 funIn(),该函数中包含一条有输出效果的语句 print('宾果!你成功访问到我啦!'),这样就会在控制台中打印出相应的信息。由于函数没有使用return语句返回任何值,所以函数最终会返回 None,并将其赋值给变量 x。

当你在单独一行输入变量 x 时,解释器不会自动输出变量的值,并且变量 x 的值是 None。只有在使用 print() 函数显式打印变量 x 时,才会在控制台中输出变量 x 的值 None。

因此,在执行 x = funIn() 语句之后,你会在控制台中看到函数执行输出的信息,然后在下一行输入变量 x,解释器将会跳过这个语句并不会输出任何内容。如果你想在控制台中显示变量 x 的值,你需要显式地使用 print() 函数将其打印出来。

isdkz 发表于 2023-5-21 08:51:04

这个问题涉及到Python函数的返回值。在Python中,如果一个函数没有明确的 return 语句,它会默认返回 None 。

在你的例子中, funIn() 函数中只有一个 print() 函数调用,没有 return 语句。所以当你调用 funIn() 时,它会打印出 宾果!你成功访问到我啦! ,但是函数的返回值是 None 。

因此,当你执行 x = funIn() 时, funIn() 的输出(也就是它的 print() 语句)被打印出来,然后函数返回 None ,这个返回值被赋给了 x 。所以 x 的值就是 None 。

接下来,当你在解释器中只输入 x 并回车,解释器不会打印出 None 。这是Python解释器的默认行为——在遇到 None 值时,它并不会打印出来。

然后,当你执行 print(x) 时, print() 函数会将它的输入(即 x 的值,也就是 None )转换为字符串并打印出来。因此,你看到的输出就是 None 。

jackz007 发表于 2023-5-21 13:24:25

本帖最后由 jackz007 于 2023-5-21 13:27 编辑

def funIn():
    print('宾果!你成功访问到我啦!')
    funIn() 被定义为无返回值函数(函数没有使用 return 语句作为结束),那就意味着如果调用此函数,会在屏幕打印信息 "宾果!你成功访问到我啦!",并返回 None,None 就是无返回值函数的返回值。
    所以,在执行过语句
x = funIn()
    后,除了会屏显信息 "宾果!你成功访问到我啦!"外,变量 x 的值也会等于 None。
   

Lynn_oyl 发表于 2023-5-25 19:45:54

之所以print(x)会输出None,是因为funIn()函数没有返回值,所以会输出None。
页: [1]
查看完整版本: 请大神解答