fishgood1981 发表于 昨天 08:55

print函数的返回值是None是什么意思

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函数的返回值不是括号中的字符串吗?

FishC 发表于 昨天 08:56

关于print函数的返回值和and-or表达式的问题,我来为你详细解释:

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

x = print("Hello")
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. 正确解决方案
使用条件表达式(三元运算符):

result = 520 if "Love" else 404

或针对print场景:

print("A") if a < b else print("B")


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

某一个“天” 发表于 昨天 08:59

返回值就是None 他只是打印到屏幕上

某一个“天” 发表于 昨天 09:00

类似的你可以对比c 的printf 返回值都不是打印的东西

某一个“天” 发表于 昨天 09:01

所有函数只要没有特殊设置返回值,返回值都是None

某一个“天” 发表于 昨天 09:01

给我个最佳{:10_257:}{:10_257:}

学数学的混子 发表于 昨天 09:08

{:13_445:}很棒

666999666999 发表于 昨天 15:59

就是返回空白的意思,比如reverse()返回值就是None
页: [1]
查看完整版本: print函数的返回值是None是什么意思