多次调度
multipledispatch的Python项目详细描述
在python中实现多个分派的相对理智的方法。
这种多重调度的实现是高效的,基本上是完整的, 执行静态分析以避免冲突,并提供可选的命名空间 支持。看起来也不错。
参见https://multiple-dispatch.readthedocs.io/
示例
>>>frommultipledispatchimportdispatch>>>@dispatch(int,int)...defadd(x,y):...returnx+y>>>@dispatch(object,object)...defadd(x,y):...return"%s + %s"%(x,y)>>>add(1,2)3>>>add(1,'hello')'1 + hello'
这是什么
- 对所有非关键字参数进行调度
- 支持继承
- 支持实例方法
- 支持联合类型,例如(int, float)
- 支持内置抽象类,例如Iterator, Number, ...
- 快速重复查找的缓存
- 识别函数定义时可能存在的歧义
- 提供解决出现歧义的提示
- 支持具有可选关键字参数的命名空间
- 支持可变分派
这不能做什么
- 对角线调度
a=arbitrary_type()@dispatch(a,a)defare_same_type(x,y):returnTrue
- 高效更新:添加新签名需要 整个功能。到了几百以后就麻烦了 键入签名。
安装和依赖项
multipledispatch在python包索引(pypi)上:
pip install multipledispatch
或
easy_install multipledispatch
multipledispatch支持python 2.6+和python 3.2+,其中 代码库。它是纯python,只需要小的six库作为依赖项。
简言之,这是一种对体重的依赖。
许可证
新的疯牛病。见License file。