gpt4 book ai didi

python - Python 中的函数模式/谓词匹配

转载 作者:太空狗 更新时间:2023-10-30 00:02:12 24 4
gpt4 key购买 nike

我希望能够分派(dispatch)函数的不同实现,不仅基于第一个参数的类型,而且基于任意谓词。目前我必须这样做:

def f(param):
try:
if param > 0:
# do something
except TypeError:
pass
try:
if all(isinstance(item, str) for item in param):
# do something else
except TypeError:
raise TypeError('Illegal input.')

以下是我希望能够做的事情的精神:

@generic
def f(param):
raise TypeError('Illegal input.') # default

@f.when(lambda param: param > 0)
def f_when_param_positive(param):
# do something

@f.when(lambda param: all(isinstance(item, str) for item in param))
def f_when_param_iterable_of_strings(param):
# do something else

它类似于 Python 3 的 singledispatch,但是 singledispatch 只支持类型分派(dispatch),不支持任意谓词。

TL;DR:是否有一个库允许基于任意谓词(不仅是参数的类型)对函数进行基于谓词的分派(dispatch)?

最佳答案

感谢回复者。在问了这个问题之后,似乎没有现成的模块可以做到这一点。所以我自己写了 :) 它的灵感来自@Elazar 的建议。

请随时查看。 It's on PyPI您可以使用以下方式安装它:

pip install genericfuncs

也是hosted on GitHub我计划在保持 API 简单的同时继续开发和添加功能。欢迎投稿。

关于python - Python 中的函数模式/谓词匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34425627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com