将"无"的参数值与"无"的默认参数值区分开来

max*_*max 1 python function python-3.x

可能重复:
有没有办法知道参数的值是否是默认值与用户指定的值?
python - 返回默认值

Python中的标准做法是None用作默认参数值.

但是,如果客户端代码可以None用作合法参数值,则这种惯用法不会很好.在这种情况下,函数无法判断客户端代码是否省略了参数,或者是否显式传递了该参数None.这不好,除非(幸运的是)函数的行为在两种情况下都应该相同.

什么是好的解决方案?

Amb*_*ber 5

_NOT_SET = object()

def some_function(some_arg=_NOT_SET):
    if some_arg is _NOT_SET:
        # ...
Run Code Online (Sandbox Code Playgroud)

任何类实例都具有is可以分辨的唯一标识.