python - 限制函数/方法的可选位置参数的数量

标签 python

限制函数或方法的可选位置参数数量的适当解决方案是什么?例如。我想要一个接受两个或三个位置参数(但不多)的函数。我无法使用可选的关键字参数(因为该函数需要接受无限数量的任意命名的关键字参数)。到目前为止我想出的是这样的:

def foo(x, y, *args, **kwargs):
    if len(args) == 1:
        # do something
    elif len(args) > 1:
        raise TypeError, "foo expected at most 3 arguments, got %d" % (len(args) + 2)
    else
        # do something else

这是否合理或者有更好的方法吗?

最佳答案

了解什么是“pythonic”的一种方法是在 python 源代码本身中搜索示例。

find '/usr/lib/python2.6' -name '*.py' -exec egrep 'len\(args\)' {} + | wc
    156     867   12946

如果您仔细阅读上述命令的结果(不带 wc),您会发现大量示例完全使用您建议的技术。

关于python - 限制函数/方法的可选位置参数的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1718442/

相关文章:

python - 为什么我们需要 python 包装(例如 egg)?

python - Pandas series.rename 给出 TypeError : 'str' object is not callable error

python - DataFrame的一列为字符串时设置WithCopyWarning

python - 使用 python 和 tensorflow 从图像中识别数字

python - 在 org 模式下调试 PYTHON 代码块 babel

python - 通过 python pandas 对字符串数据框进行排序

python - 使用 Pandas 中的 Cumcount 执行条件分组并选择第二最佳行

python - multiprocessing.Pool : When to use apply, apply_async 或映射?

python - 如何将未引用的 Python 函数/lambda 转换为 AST? 2.6

python - 使用贪心Python算法解决背包问题