这段代码在做什么?

3 投票
5 回答
511 浏览
提问于 2025-04-16 19:58
>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
>>> non_null = string1 or string2 or string3
>>> non_null
'Trondheim'

这是来自这个页面的Python教程,我不太明白第二行的意思。

5 个回答

2

它只是给你返回第一个非空的字符串'特隆赫姆',这和下面的代码是一样的:

non_null = (string1 or string2) or string3

或者:

if not string1:
    string3 if not string2 else string2
else:
    string1
7

Python中的or运算符可以这样理解:[1]

x or y : if x is false, then y, else x

当你写string1 or string2时,如果string1是一个空字符串,Python会把它看作False(顺便说一下,有些编程语言这样处理,有些则不一样)。根据上面的定义,这个表达式的结果就是string2的值。接着,如果你再写(string1 or string2) or string3,因为string2不是空字符串,所以它不等于False,因此这个表达式的结果就是string2

[1] http://docs.python.org/release/2.5.2/lib/boolean.html

4

这个内容展示了两个概念:a) 操作符短路和 b) 在Python中,逻辑运算符可以接受和返回非布尔值(也就是不是True或False的值)。

string1 or string2 or string3 # is the same as
(string1 or string2) or string3
# string1 or string2 is '' or 'Trondheim', and as
# '' is logically False, this results in 'Trondheim'
# 'Trondheim' or string3 is short-circuited and never evaluated,
# because a non-empty string is logically True

撰写回答