在bisect.bisect_left中,高=无优于高=len(a)

  • 本文关键字:bisect len 于高 left python
  • 更新时间 :
  • 英文 :


我正在学习 8.6. bisect — 数组平分算法,

bisect.bisect_left(a, x, lo=0, hi=len(a))的默认值为lo=0, hi=len(a)
当我检查源代码发现hi=len(a)没有直接设置为默认值时,

def bisect_right(a, x, lo=0, hi=None):
if lo < 0:
raise ValueError('lo must be non-negative')
if hi is None:
hi = len(a)
while lo < hi:
mid = (lo+hi)//2  
if x < a[mid]:
hi = mid
else:
lo = mid+1
return lo

它是通过 if 检查 none 实现的。

与直接将其设置为默认值相比,进行额外检查有什么好处?

因为a尚未定义。该参数在函数定义中之前不存在;其他参数看不到它。

相关内容

最新更新