Python / Numba / @ jit: Избегание глобальной переменной в рекурсивной функции, которая использует возвращаемое значение в качестве параметра - PullRequest
0 голосов
/ 07 июня 2018

В настоящее время я работаю над следующим кодом, который работает на Python, но завершается неудачно, когда я пытаюсь использовать Numba (@jit) в функции, поскольку Numba, похоже, не любит глобальные переменные.Я не уверен в том, как мне поступить, поскольку глобальная переменная r1 должна использоваться как для следующих циклов, так и для рекурсии внутри цикла. Параметры для функции im, c, & r0 являются массивами.Любые предложения приветствуются.

def recloop(im,c,r0):
    global r1
    first=True
    for i in r0:
        if not first:
            temp=r1
        imj1=np.linspace(0,im[1]*(1-i),\
                         np.abs(im[1]*(1-i)-1),dtype=int)
        r1=c[1]*imj1+i
        if len(im[1:])!=1:
            r1=recloop(im[1:],c[1:],r1)
        else:break
        if not first:
            r1=np.concatenate((temp,r1))
        else:
            first=False
    return r1
...