
On Wed, Oct 27, 2021 at 4:07 PM Christopher Barker <pythonchb@gmail.com> wrote:
It's not actually documented that None indicates "use the default".
Which, it turns out is because it doesn't :-)
In [24]: bisect.bisect([1,3,4,6,8,9], 5, hi=None) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-24-65fd10e3a3b5> in <module> ----> 1 bisect.bisect([1,3,4,6,8,9], 5, hi=None)
TypeError: 'NoneType' object cannot be interpreted as an integer
I guess that's because in C there is a way to define optional other than using a sentinel? or it's using an undocumented sentinal?
Note: that's python 3.8 -- I can't imagine anything;s changed, but ...
Actually it has. The C-accelerated version of the function changed its signature between 3.8 and 3.11 - probably when Argument Clinic got deployed. bisect_right(...) bisect_right(a, x[, lo[, hi]]) -> index So, yes, the 3.8 version of it does indeed use "optional" without a default. And code that passes None directly is buggy. ChrisA