Python 递归 returns None

Python recursion returns None

这会很有趣... 给定以下 python 代码:

def getBinary(binaryInput, kSize, beginBit):
    if int(binaryInput[beginBit + kSize-1])==1:
        print 'entered!!!'
        shortE = binaryInput[beginBit:kSize+beginBit]
        print 'shortE is now: ', shortE
        print 'kSize is now: ', kSize
        return (shortE,kSize)
    else :
        print 'else entered...'
        kSize -=1
        getBinary(binaryInput, kSize, beginBit)

result = getBinary("{0:b}".format(6), 3, 0)
print result

输出为:

else entered...
entered!!!
shortE is now:  11
kSize is now:  2
None

我的意思是因为 shortE 是 11 而 kSize 是 2,为什么 return 值是 None

else 部分缺少代码:

def getBinary(binaryInput, kSize, beginBit):
    if int(binaryInput[beginBit + kSize-1])==1:
        print 'entered!!!'
        shortE = binaryInput[beginBit:kSize+beginBit]
        print 'shortE is now: ', shortE
        print 'kSize is now: ', kSize
        return (shortE,kSize)
    else :
        print 'else entered...'
        kSize -=1
        return getBinary(binaryInput, kSize, beginBit)
        # ^^^^

当一个函数在没有执行 return 语句的情况下结束时,它 returns None。而不是

getBinary(binaryInput, kSize, beginBit)

你是说

return getBinary(binaryInput, kSize, beginBit)