Использование int с base - верный путь.Я делал это до того, как обнаружил, что int принимает базу.В основном это редукция, применяемая к пониманию списка примитивного способа преобразования двоичного в десятичное (например, 110 = 2 ** 0 * 0 + 2 ** 1 * 1 + 2 ** 2 * 1)
add = lambda x,y : x + y
reduce(add, [int(x) * 2 ** y for x, y in zip(list(binstr), range(len(binstr) - 1, -1, -1))])