Для статьи мне ваш вариант кажется лучше, потому что всё явным образом объявлено. Читателю не нужно вникать в range, можно вообще про него не знать. Но если бы я для себя писал код - то автоматически написал бы с range(). Что собственно и было сделано.
Ваши результаты, похоже, подверждают догадку, что сперва проверяется < > и если число не в диапазоне то дополнительная проверка не делается и, следовательно, времени тратится меньше.
Предлагаю компромиссную терминологию: от примера с range глаз должен не дергаться а моргать примерно в 2-3 раза чаще чем обычно.
Для статьи мне ваш вариант кажется лучше, потому что всё явным образом объявлено. Читателю не нужно вникать в range, можно вообще про него не знать. Но если бы я для себя писал код - то автоматически написал бы с range(). Что собственно и было сделано.
Ваши результаты, похоже, подверждают догадку, что сперва проверяется < > и если число не в диапазоне то дополнительная проверка не делается и, следовательно, времени тратится меньше.
Предлагаю компромиссную терминологию: от примера с range глаз должен не дергаться а моргать примерно в 2-3 раза чаще чем обычно.
Подозреваю, что речь идёт о том, что в случае с int, проверка in range() происходит примерно также как вы написали в своей версии.
То есть сравнивается с началом диапазона, с концом и делается что-то ещё но не перебор.
Я плохо понимаю Си, но если вы разбираетесь - то ответ где-то здесь:
https://github.com/python/cpython/blob/3.13/Objects/rangeobject.c#L483
Мне ваш вариант больше нравится, попробую внести изменение в статью, спасибо
Спасибо за то что прочитали! Цель задёргать глаз я не ставил, вы тоже извините)) Как лучше написать эту функцию по вашему мнению?