python – 指定存在/不存在的默认参数的惯用方法

我经常看到
python代码采用默认参数,并且在未指定时具有特殊行为.

如果我想要这样的行为:

def getwrap(dict, key, default = ??):
    if ???: # default is specified
        return dict.get(key, default)
    else:
        return dict[key]

如果我要自己动手,我最终会得到类似的东西:

class Ham:
    __secret = object()
    def Cheese(self, key, default = __secret):
        if default is self.__secret:
            return self.dict.get(key, default)
        else:
            return self.dict[key]

但是当我确实有一个标准时,我不想发明一些愚蠢的东西.在Python中这样做的惯用方法是什么?

最佳答案 我通常更喜欢

def getwrap(my_dict, my_key, default=None):
    if default is None:
        return my_dict[my_key]
    else:
        return my_dict.get(my_key, default)

但当然这假设None永远不是有效的默认值.

点赞