“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。
这是合法/可靠的写法吗?还是有什么要注意的地方?