代码之家  ›  专栏  ›  技术社区  ›  sunmat

在python中验证kwargs中的参数组合

  •  0
  • sunmat  · 技术社区  · 5 年前

    我有一个名为 download ,可以通过两种方式使用:

    download(git='[email protected]:someone/somerepo.git', ...)
    download(url='https://someurl/something.tar.gz', ...)
    

    提供时 git 作为关键字参数,可以提供其他关键字参数(可选或强制),例如 commit , tag , branch 等 提供时 url ,可以提供不同于的其他关键字参数 吉特 例如 md5 ,或者不。

    编程时 下载 函数,是否有一种传统的方法来指定哪些关键字参数组合是有效的,或者是否有一个库可以帮助实现这一点?例如,如果指定 犯罪 url 使用了参数,或者如果两者都使用则引发异常 吉特 url 使用了参数。

    现在我所拥有的是:

    def download(**kwargs):
        if 'git' in kwargs:
            if 'url' in kwargs:
                # throw error
            _download_with_git(**kwargs)
        elif 'url' in kwargs:
            _download_with_url(**kwargs)
        else:
            # throw error
    

    这种解决方案目前可能很好,但对于具有更多参数组合的其他函数来说可能会变得棘手。我可以考虑写一个装饰器来概括模式,但我想知道是否已经存在某种东西。

    0 回复  |  直到 5 年前