鱼C论坛

 找回密码
 立即注册
查看: 1964|回复: 6

请大神解答

[复制链接]
发表于 2023-5-21 01:08:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def funIn():
        print('宾果!你成功访问到我啦!')
>>> funIn() # 可打印输出
宾果!你成功访问到我啦!
>>> x = funIn() # 可打印输出
宾果!你成功访问到我啦!
>>> x # 为何不会打印输出?
>>> print(x) # 为什么必须通过print()才可打印输出,而且输出的还是None?
None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-21 01:09:32 | 显示全部楼层
在Python中,如果一个函数没有使用return语句返回任何值,则这个函数将会返回一个特殊的值 None。因此,当你在赋值语句中调用这个函数时(例如 x = funIn()),变量 x 将会被赋值为 None。

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

如果你想在控制台中输出变量 x 的值,必须使用 print() 函数将其明确地打印到屏幕上,就像你在最后一行的操作一样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

因为:

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

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

所以:

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

那为何:

>>> x = funIn() # 又可打印输出?
宾果!你成功访问到我啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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() 函数将其打印出来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-21 13:24:25 | 显示全部楼层
本帖最后由 jackz007 于 2023-5-21 13:27 编辑
def funIn():
    print('宾果!你成功访问到我啦!')
    funIn() 被定义为无返回值函数(函数没有使用 return 语句作为结束),那就意味着如果调用此函数,会在屏幕打印信息 "宾果!你成功访问到我啦!",并返回 None,None 就是无返回值函数的返回值。
    所以,在执行过语句
x = funIn()
    后,除了会屏显信息 "宾果!你成功访问到我啦!"外,变量 x 的值也会等于 None。
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-25 19:45:54 | 显示全部楼层
之所以print(x)会输出None,是因为funIn()函数没有返回值,所以会输出None。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 01:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表