Python中True与数值/None在逻辑判断中的含义咨询
Python逻辑运算问题解答
调用limit(arr, max=7)时,True和数值的逻辑与是什么意思?
当你不指定min参数时,min_check(x)会直接返回True,这时候过滤条件就变成了True and max_check(x)。在Python里,and是短路求值,而且会返回最后一个参与运算的有效真值:
- 这里
max_check(x)返回的是x<=7的布尔结果(True或False),所以True and 布尔值其实就等于这个布尔值本身。简单说就是,True在这里相当于“没限制”,过滤逻辑完全由max_check(x)决定,只留下小于等于7的元素。 - 举个实际例子:x=3时,
True and True结果是True,会被保留;x=8时,True and False结果是False,会被过滤掉。
True和None做逻辑运算代表什么?
在Python里,None属于假值(Falsy),True属于真值(Truthy),逻辑运算的规则是:
True and None:and会先看左边是真值,所以继续评估右边,最终返回右边的None。True or None:or看到左边是真值,直接返回True,不会管右边的None。- 反过来,如果是
None and True,and看到左边是假值,直接返回None,不会评估右边。
不过你的代码里不会出现这种情况,因为当min或max为None时,对应的lambda返回的是True,不是None,只有手动写True and None这种表达式才会触发。
代码简化小技巧
你的代码逻辑没问题,可以把lambda写得更简洁:
min_check = lambda var: min is None or var >= min max_check = lambda var: max is None or var <= max
利用逻辑或的短路特性,和原来的逻辑完全一致,看起来更清爽。
内容的提问来源于stack exchange,提问作者Mohammad
相关产品推荐
相关产品推荐

