我想知道在Python中指示无效参数组合的最佳实践.我在几种情况下遇到过这样的函数:

def import_to_orm(name, save=False, recurse=False):
    """
    :param name: Name of some external entity to import.
    :param save: Save the ORM object before returning.
    :param recurse: Attempt to import associated objects as well. Because you
        need the original object to have a key to relate to, save must be
        `True` for recurse to be `True`.
    :raise BadValueError: If `recurse and not save`.
    :return: The ORM object.
    """
    pass

唯一令人恼火的是,每个包都有自己的包,通常略有不同的BadValueError个包.我知道Java中有java.lang.IllegalArgumentException--大家都知道每个人都会用Python创建自己的BadValueError,还是有另一种首选的方法?

推荐答案

除非你需要一个更具体的例外,否则我只会筹集ValueError美元..

def import_to_orm(name, save=False, recurse=False):
    if recurse and not save:
        raise ValueError("save must be True if recurse is True")

使用class BadValueError(ValueError):pass真的没有意义-您的自定义类在使用上与ValueError相同,所以为什么不使用它呢?

Python相关问答推荐

使用Ubuntu、Python和Weasyprint的Docker文件-venv的问题

如何防止Plotly在输出到PDF时减少行中的点数?

仅从风格中获取 colored颜色 循环

Pandas 第二小值有条件

try 在树叶 map 上应用覆盖磁贴

如何根据参数推断对象的返回类型?

如何从pandas的rame类继承并使用filepath实例化

实现自定义QWidgets作为QTimeEdit的弹出窗口

Pandas—在数据透视表中占总数的百分比

使用NeuralProphet绘制置信区间时出错

为一个组的每个子组绘制,

在matplotlib中删除子图之间的间隙_mosaic

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

numpy.unique如何消除重复列?

Flask Jinja2如果语句总是计算为false&

为什么常规操作不以其就地对应操作为基础?

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

极柱内丢失类型信息""

Regex用于匹配Python中逗号分隔的AWS区域

设置索引值每隔17行左右更改的索引