李升伟 整理
问题:
请运行如下代码,并解释打印的结果:
a = 'python'
print('hello,', a or 'world')
b = ''
print('hello,', b or 'world')
解答:
运行代码后的输出结果为:
hello, python hello, world
关键逻辑解释
1. a = 'python'
时的行为
-
逻辑判断
a or 'world'
-
a
的值是'python'
(非空字符串),在 Python 中非空字符串被视为 真值(Truthy)。 -
or
运算符的规则是:返回第一个为真的值,因此直接选择a
。 -
最终输出:
hello, python
。
-
2. b = ''
时的行为
-
逻辑判断
b or 'world'
-
b
的值是空字符串''
,在 Python 中空字符串被视为 假值(Falsy)。 -
or
运算符会跳过假值,继续检查下一个值'world'
(非空字符串,为真)。 -
最终输出:
hello, world
。
-
Python 中 or
的底层规则
-
短路逻辑:
or
会从左到右依次检查表达式中的值,返回 第一个为真的值,后续不再计算。 -
Truthy 与 Falsy:
-
Falsy 值:
False
,0
,''
(空字符串),None
, 空容器(如[]
,{}
,()
)。 -
Truthy 值:除上述外的其他值(如非空字符串、非零数字、非空容器)。
-
类似场景举例
若变量值为其他 Falsy/Truthy 类型,行为类似:
# 示例1:变量为 0(Falsy) c = 0 print(c or 100) # 输出 100 # 示例2:变量为列表(Truthy) d = [1, 2] print(d or [3, 4]) # 输出 [1, 2]
通过理解 or
的短路逻辑和 Truthy/Falsy 规则,可以高效控制默认值或条件分支。
(解答来自deepseek。)