Python Singledispatch decorator不';I don’我不能像广告上说的那样工作
我正在测试python的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
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)
...