Python Singledispatch decorator不';I don’我不能像广告上说的那样工作

Python Singledispatch decorator不';I don’我不能像广告上说的那样工作,python,single-dispatch,Python,Single Dispatch,我正在测试python的singledispatch: 根据文件,A区应该和B区一样工作。但是,您可以在输出中看到,只有块B按预期工作 这里有什么问题?谢谢 from functools import singledispatch # Block A @singledispatch def divider(a, b=1): print(a, b) @divider.register def _(a: int, b=1): print(a/b) @divider.regis

我正在测试python的
singledispatch

根据文件,A区应该和B区一样工作。但是,您可以在输出中看到,只有块B按预期工作

这里有什么问题?谢谢

from functools import singledispatch


# Block A
@singledispatch
def divider(a, b=1):
    print(a, b)

@divider.register
def _(a: int, b=1):
    print(a/b)

@divider.register
def _(a: str, b=1):
    print(a[:len(a)//b])

divider(25, 2)
divider('single dispatch practice', 2)


# Block B
@singledispatch
def div(a, b=1):
    print(a, b)


@div.register(int)
def _(a: int, b=1):
    print(a/b)


@div.register(str)
def _(a: str, b=1):
    print(a[:len(a)//b])

div(25 , 2)
div('single dispatch practice', 2)
输出:

>> 25 2
>> single dispatch practice 2
>> 12.5
>> single dispatch
我正在测试python的singledispatch(…)这里有什么问题

使用类型注释是正确的,但是
@singledispatch
只使用它们(注释是在Python 3.0中引入的,singledispatch是在3.4中引入的)。因此


您使用的是什么版本的python?Python 3.7Thank中新增了类型注释功能。我将python解释器更改为3.7,现在它可以工作了@PatrickHaugh实际上是在3.0中引入类型注释的,然而,
@singledispatch
只在3.7中使用了@miraculixx,这就是我所说的“类型注释功能”。我想这有点不清楚。
# works since 3.4
@foo.register(str)
def foo_str(a: str):
    ...

# works since 3.7
@foo.register
def foo_str(a: str)
    ...