【问题标题】:Python: function parameter combination validationPython:函数参数组合验证
【发布时间】:2020-07-24 04:34:41
【问题描述】:

尝试验证函数参数组合。这样()(project)(project,field)(project,field,well) 是有效的,而其他所有组合(例如(field))都是无效的。如果可用,参数将是字符串,否则默认为 None 或空字符串“”。目前正在做穷人的位掩码检查...

def make_thing(project=None, field=None, well=None):
    # check for valid p-f-w combinations
    check = (8 if project else 0) + (4 if field else 0) + (1 if well else 0)
    if check not in (0, 8, 8 + 4, 8 + 4 + 1):
        return None

    # continue to do work

问题:什么是正确的 Pythonic 方法?

谢谢!

【问题讨论】:

    标签: python validation parameters arguments


    【解决方案1】:

    第一个建议

    def make_thing(project=None, field=None, well=None):
        if (not project and field) or (not field and well):
            return
    
        # continue to do work
    

    第二个建议

    def make_thing(project=None, field=None, well=None):
        if (bool(project), bool(field), bool(well)) not in (
            (False, False, False),
            (True, False, False),
            (True, True, False),
            (True, True, True),
        ):
            return
    
        # continue to do work
    

    【讨论】:

    • 谢谢,但这很难解释……至少对我来说是这样。
    • @k1m190r 我想是的。第一个建议可能不是 Pythonic。我添加第二个建议。
    • 继续疯狂itertools.combinations_with_replacement([True, False], 3) ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2023-03-31
    • 2020-09-05
    相关资源
    最近更新 更多