numpy 返回None的函数(函数式编程)[duplicate]

myzjeezk  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(125)

此问题在此处已有答案

Why do I get AttributeError: 'NoneType' object has no attribute 'something'?(11个答案)
5天前关闭。
我正在尝试创建一个函数式函数,并希望它返回一个数组(ndarray)。我不知道为什么,但我的代码返回了None。下面是我的代码:

def upgrade_array(array:np.ndarray, max_value:int, value:int=1):
    a = array.copy()
    index = value-1
    a[index,:] = value
    #display(a)
    if value==max_value:
        return np.array(a)
    else:
        upgrade_array(array=a, max_value=max_value, value=value+1)
        
a = np.zeros(shape=(10,5))
b = upgrade_array(array=a, max_value=10)
display(b)

我知道后面的逻辑是正确的,因为我验证了它(使用display(a))。我如何使它返回ndarray?

6bc51xsx

6bc51xsx1#

else:的情况下,函数不返回值。当然,递归调用可能会返回值,但原始调用不会。您需要在调用链中向上return该值,如下所示

def upgrade_array(array:np.ndarray, max_value:int, value:int=1):
    a = array.copy()
    index = value-1
    a[index,:] = value
    #display(a)
    if value==max_value:
        return np.array(a)
    else:
        # notice the change here:
        return upgrade_array(array=a, max_value=max_value, value=value+1)
        
a = np.zeros(shape=(10,5))
b = upgrade_array(array=a, max_value=10)
display(b)

相关问题