要实现isNum()函数,判断字符串是否属于整数、浮点数或复数,但无法理解参考代码,能否详细解释一下?

题目来源于《Python语言程序设计基础(第2版)》程序与练习5.3,但是参考答案和网络上的不太一样,远比网络的答案复杂,不知道怎么理解,想画个流程图也不知道从何下手,希望有朋友能详细解释一下各行代码是怎么写出来的,以及如何才能想到这样设计。
部分注释是原来就有的,部分是我自己加的,但是从 #进入其他数字类型判断 之后我就理解不了了,一层套一层的。

# python 中合法的数字有十进制整数,浮点数,十六进制整数,复数
# --------------------------3 也是合法数字

def isNum(num):
    np = '+-'
    numbers = '.0123456789'
    numbersE = '.0123456789+-jJEe'
    x16 = '0123456789abcdefABCDEF'
    
    if num[0] in np:
        try:
            return isNum(num[1:])#去掉数字前的正负号,进行后续字符判断
        except:
            return False
    elif num[0] in numbers:      #去掉数字前的正负号后,排除开头有不属于数字类型的字符
        if num[:2] == '0x':         # 进入16进制分支判断
            for i in num[2:]:
                if i not in x16:       #包含不属于16进制的字符,不属于数字类型
                    return False
                return True
        else:                       #进入其他数字类型判断
            ele = 0
            point = 0
            last = ''
            numaftere = 0
            q = 0
            for i in num:
                q = q+1
                if i not in numbersE:  #包含不属于数字的字符,不属于数字类型
                    return False
                else:
                    if point == 0 and i == '.':
                        point = 1
                        continue
                    if point == 1 and (numaftere == 1 or ele == 0) and i in '+-':
                            # 一个数字结束,进入了第二个数字(一般是复数)
                        point = 0
                        continue
                    if ele == 0 and i in 'Ee':
                            # 出现了第一个 E, 一个浮点数中只能出现一个 E
                        ele = 1
                        continue
                    if ele == 1 and i in '0123456789':
                        numaftere = 1
                        continue
                    if ele == 1 and numaftere == 1 and i in '+-':
                            # 针对复数的特例
                        ele = 0
                        numaftere = 0
                        continue
                    if last =='.' and i in '+-':
                        return False
                    elif (point == 1 or last in 'EeJj') and i == '.':
                            
                        return False
                    elif i in 'Jj' and last in '+-':
                        return False
                    elif ele == 1 and i in 'Ee.':
                        return False
                last = i
            if last == '.' and i in '+-':
                return False
            elif (point == 1 or last in 'EeJj') and i == '.':
                return False
            elif i in 'Jj' and last in '+-.':
                return False
            elif ele == 1 and i in 'Ee.':
                return False
            else:
                return True
            
    else:     
        return False

                        

# 测试集
print(isNum('Hello'))
print(isNum('+++++++++++++++++++++++++++++++++++++'))
print(isNum('+-+-+-+-+-+-3'))
print(isNum('100'))
print(isNum('10e10'))
print(isNum('10e+10'))
print(isNum('10e10.'))
print(isNum('10e10e'))
print(isNum('10e10+4E10'))
print(isNum('10e'))
print(isNum('10e+1j'))
print(isNum('10e10+1.j'))
print(isNum('1.0e+10-j'))
print(isNum('1.0e+1j-3.e'))
print(isNum('1.0e10+1j-3.e10'))
print(isNum('1.3333'))
print(isNum('.3333'))
print(isNum('.333.3'))
print(isNum('.3333e5'))
print(isNum('12345678'))
print(isNum('0abddf'))
print(isNum('0xabddf'))

这个代码的设计,类似穷举,就是排除一切不可能,找到可能,没有用到任何的内置函数,属于底层的逻辑,核心就是把数字分成几个类别,有符号的,无符号的,然后再细分,整数,小数,复数,16进制数,一点一点缩小范围,要写这样的代码,你需要了解数字表现形式的所有可能,然后逐一判断。但是python有很多已经内置的函数和方法可以更简单的判断。我估计你不理解的部分应该是复数的部分,复数的表现形式。还有就是如何一步步的缩小范围,没必要纠结,看的多了,就懂了。