Python中or运算符用于变量赋值的逻辑原理是什么?
Python中or运算符的赋值逻辑解析
先明确:end = end or lst[-1]不会同时给end赋两个值,它是利用Python中or运算符的短路求值逻辑来做默认值处理,具体规则如下:
- Python的or运算符会从左到右依次判断操作数:
- 若左侧操作数是真值(非None、非0、非空容器/字符串等),直接返回左侧值
- 若左侧操作数是假值(None、0、""、[]等),才会返回右侧操作数
结合你给出的代码来看:
- 当调用函数时没有传入
end参数,end的默认值是None(假值),此时end or lst[-1]会返回lst[-1](列表最后一个元素的值),最终end被赋值为这个值 - 当调用函数时传入了有效的
end值(比如3、5这类真值),or会直接返回传入的end值,不会再处理右侧的lst[-1]
举个实际例子验证:
假设lst = [1,2,3,4,5]
- 调用
range_in_list(lst):end为None,最终end被赋值为5,切片lst[0:5+1]即整个列表,求和结果为15 - 调用
range_in_list(lst, end=3):end是3(真值),直接使用该值,切片lst[0:3+1]即[1,2,3,4],求和结果为10
内容的提问来源于stack exchange,提问作者fabestah
相关产品推荐
相关产品推荐

