“and”和“or”如何与非布尔值配合使用?

11 浏览
0 Comments

“and”和“or”如何与非布尔值配合使用?

我正在学习Python,遇到了一些代码,它很简洁,但并不完全合理。

代码的上下文是:

def fn(*args):
    return len(args) and max(args)-min(args)

我知道它在做什么,但为什么Python会这样做 - 也就是返回值而不是True/False呢?

10 and 7-2

返回5。类似地,将and改为or会导致功能发生改变。所以

10 or 7 - 2

会返回10。

这是合法/可靠的写法吗?还是有什么要注意的地方?

0