Если база не указана, int
по умолчанию равен основанию 10, вместо того, чтобы угадывать, какой базой является литерал. Например, 0b101
также является допустимым шестнадцатеричным литералом:
>>> int('0b101', 16)
45313
>>> int('0xb101', 16)
45313
Если вы не хотите, чтобы он обрабатывался как base-10, вы должны четко указать, как он должен лечиться.
>>> int('0b101', 2)
5