python: ограничить размер целых чисел

В питоне целые числа имеют неограниченный размер (ограничено лишь памятью)

А можно ли ограничить размер целых чисел, чтобы скажем 100**100 или math.factorial(100) уже не вычислялось, а выпадало бы исключение?


Ответы (1 шт):

Автор решения: Amgarak

Можно попробовать использовать декоратор:

def big_number_decorator(func):
    def wrapper(n):
        if n > 100:
            raise ValueError(f"Число {n} превышает максимальное значение!")
        return func(n)
    return wrapper

@big_number_decorator
def big_number(n):
    return n

try:
    big_number(100)
except ValueError as e:
    print(e)

Теперь при вызове функции, сперва отработает декоратор, проверит что число не больше нужного и только потом вызовет вашу функцию или выбьет исключение и вычисление не произойдёт.

→ Ссылка