跳转到主要内容

多分派

项目描述

Build Status Coverage Status Version Status

Python中相对合理的多分派方法。

此多分派实现效率高,功能基本完整,执行静态分析以避免冲突,并提供可选命名空间支持。它看起来也很好。

请参阅文档:https://multiple-dispatch.readthedocs.io/

示例

>>> from multipledispatch import dispatch

>>> @dispatch(int, int)
... def add(x, y):
...     return x + y

>>> @dispatch(object, object)
... def add(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)
def are_same_type(x, y):
    return True
  • 高效更新:添加新签名需要整个函数的完全解析。类型签名达到几百个后,这会变得麻烦。

安装和依赖

multipledispatch 在 Python 包索引 (PyPI) 上

pip install multipledispatch

它是纯 Python,只依赖于标准库。它是一个轻量级依赖。

许可证

新 BSD 许可。请参阅 许可证文件

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

multipledispatch-1.0.0.tar.gz (12.4 kB 查看哈希值)

上传时间

构建分发

multipledispatch-1.0.0-py3-none-any.whl (12.8 kB 查看哈希值)

上传时间 Python 3

由以下机构支持