假设我有一个函数可以同时接受一个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
我希望函数简单地返回一个正态分布的随机数。如果我想要可重现的结果,种子应该是int.
get_random(42)
>>> 0.4967141530112327
get_random(42)
>>> 0.4967141530112327
get_random(42)
>>> 0.4967141530112327
如果我想要随机数,seed应保留为None. 但是,如果我不传递参数(因此种子默认为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
慕侠2389804
相关分类