可能重复:
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
。这不好,除非(幸运的是)函数的行为在两种情况下都应该相同。
什么是好的解决方案?
答案 0 :(得分:5)
_NOT_SET = object()
def some_function(some_arg=_NOT_SET):
if some_arg is _NOT_SET:
# ...
任何类实例都具有is
可以区分的唯一标识。