python - 指定默认参数的惯用方式,其存在/不存在很重要

标签 python default-arguments

我经常看到 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 永远不是有效的默认值。

关于python - 指定默认参数的惯用方式,其存在/不存在很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4936550/

相关文章:

python - 将字符串列表写入txt文件,但文件为空,为什么?

python - 如何以优雅有效的方式将 python callable 映射到 numpy 数组?

Python 拒绝写入访问,但我有手动访问权限,这可能是什么原因造成的?

Python 默认参数评估

python - pyLDAvis : Validation error on trying to visualize topics with BTM

Python并发executor.map()和submit()

c++ - C++14 及更高版本是否允许 Lambda 函数的默认参数?如果是这样怎么办?

c++ - 默认模板参数如何工作?

c++ - 具有不同默认参数值的函数

R:如何将默认参数传递给函数?