Скажем, у меня есть функция, которая может принимать как int
, так и None
тип в качестве входного аргумента
import numba as nb
import numpy as np
jitkw = {"nopython": True, "nogil": True, "error_model": "numpy", "fastmath": True}
@nb.jit("f8(i8)", **jitkw)
def get_random(seed=None):
np.random.seed(None)
out = np.random.normal()
return out
Я хочу, чтобы функция просто возвращала нормально распределенное случайное число.Если я хочу воспроизводимых результатов, seed должен быть int
.
get_random(42)
>>> 0.4967141530112327
get_random(42)
>>> 0.4967141530112327
get_random(42)
>>> 0.4967141530112327
Если я хочу случайные числа, seed
следует оставить как None
.Однако, если я не передам аргумент (так по умолчанию seed = None
) или явно передам seed=None
, тогда numba вызовет TypeError
get_random()
>>> TypeError: No matching definition for argument type(s) omitted(default=None)
get_random(None)
>>> TypeError: No matching definition for argument type(s) omitted(default=None)
Как я могу написать функцию, все еще объявляяподпись и использование режима nopython
для такого сценария?
Моя версия numba - 0.43.1