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

时间:2012-10-23 04:30:14

标签: python function python-3.x

  

可能重复:
  Is there any way to know if the value of an argument is the default vs. user-specified?
  python - returning a default value

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

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

什么是好的解决方案?

1 个答案:

答案 0 :(得分:5)

_NOT_SET = object()

def some_function(some_arg=_NOT_SET):
    if some_arg is _NOT_SET:
        # ...

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