鱼C论坛

 找回密码
 立即注册
查看: 42|回复: 7

[已解决]print函数的返回值是None是什么意思

[复制链接]
发表于 昨天 08:55 | 显示全部楼层 |阅读模式

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

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

x
15讲作业题3题目:
大多数 if - else 条件分支还可以使用 and - or 运算符组合的表达式来代替,那么如果将下面代码转变成 and - or 来实现,应该是怎样的呢?
if "Love":
    520
else:
    404
答案:
"Love" and 520 or 404

作业答案解析:

因为 C and X or Y 的含义就是 “如果 C 为真,就返回 X;如果 C 为假,就跳过 X,返回 Y”。

不过这里需要注意的一点是:上面的 X 必须是一个能得到布尔真值的表达式,否则就会出问题(像 a < b and print("A") or print("B") 这个表达式就不行了,因为 print 函数的返回值是 None)。

最后,这仅仅是一个 “炫技” 的小窍门,对于实际编程来说几乎没啥实际用处,大家可以不必因为没想出来就郁郁寡欢(但对于那些没事总想刁难你的老师和面试官来说,这个又是必须知道的技巧)。

其实,相比起 and - or 的形式,小甲鱼感觉条件表达式真的要 “香” 很多!

小甲鱼老师在答案解析中说明print函数的返回值是None,不太理解是什么意思,难道print函数的返回值不是括号中的字符串吗?
最佳答案
昨天 09:01
给我个最佳
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 08:56 | 显示全部楼层
关于print函数的返回值和and-or表达式的问题,我来为你详细解释:

1. print函数的返回值为什么是None?
- print函数的作用是将内容输出到控制台,而不是返回内容
- 函数执行后没有明确return语句时,默认返回None
- 示例验证:

  1. x = print("Hello")
  2. print(x)  # 输出 None
复制代码


2. and-or表达式的工作原理
表达式 C and X or Y 的逻辑:
1. 若C为真 → 返回X
2. 若C为假 → 返回Y

3. 为什么print不能用在and-or中?
当使用 a < b and print("A") or print("B") 时:
- print("A") 执行后返回 None(相当于False)
- 当a<b为True时:True and None → None
- None or print("B") → 触发执行print("B")
- 结果会同时打印A和B,不符合预期

4. 正确解决方案
使用条件表达式(三元运算符):

  1. result = 520 if "Love" else 404
复制代码

或针对print场景:

  1. print("A") if a < b else print("B")
复制代码


关键总结:
- print() 的返回值始终是 None,与打印内容无关
- and-or 要求中间值X必须为真(非None/非零/非空)
- 条件表达式 X if C else Y 更安全直观

这个技巧了解即可,实际编程推荐使用清晰的条件表达式!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 08:59 | 显示全部楼层
返回值就是None 他只是打印到屏幕上
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 昨天 09:00 | 显示全部楼层
类似的你可以对比c 的printf 返回值都不是打印的东西
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 09:01 | 显示全部楼层
所有函数只要没有特殊设置返回值,返回值都是None
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 09:01 | 显示全部楼层    本楼为最佳答案   
给我个最佳
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 09:08 | 显示全部楼层
很棒
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 15:59 | 显示全部楼层
就是返回空白的意思,比如reverse()返回值就是None
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-16 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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