python 中的多重调度

Multipledispatch in python

谁能解释为什么它不起作用?我希望每个函数都有相同的第二个参数。

from multipledispatch import dispatch

@dispatch(str, ss=list)
def Func(s, ss=[]):
    return s

@dispatch(list, ss=list)
def Func(l, ss=[]):
    return Func(l[0], ss)

Func(["string"])

错误是:Could not find signature for Func: <str, list>

因为您在 @dispatch 中使用了关键字参数,所以在调用该函数时必须使用关键字参数,因为它已经使用关键字 ss 作为可发现的签名。

@dispatch(str, ss=list)
def Func(s, ss=[]):
    return s


@dispatch(list, ss=list)
def Func(l, ss=[]):
    return Func(l[0], ss=ss)

Func(["string"])  # output: string
Func("string", [])  # calling this will raise error
Func("string", ss=[])  # output: string