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函数的返回值不是括号中的字符串吗? 关于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 小助理,如未能正确解答您的问题,请继续追问。 返回值就是None 他只是打印到屏幕上 类似的你可以对比c 的printf 返回值都不是打印的东西 所有函数只要没有特殊设置返回值,返回值都是None 给我个最佳{:10_257:}{:10_257:} {:13_445:}很棒 就是返回空白的意思,比如reverse()返回值就是None
页:
[1]