假设我有一个带有两个参数x
和y
的函数。如果未给出y
,那么我将根据x
创建默认值。当然,我无法使用def myfunc(x, y=x+1)
定义函数,因为默认值将在函数的定义中进行计算,而不是在调用时。因此,我会使用def myfunc(x, y=None)
定义该函数,并在我的函数正文中检查y
是否为None
,如果是,则将y
重新定义为x + 1
}。如果y
可以任何,该怎么办?即使None
是可能值,该怎么办?即使myfunc(4)
的默认值为myfunc(4, None)
,我有没有办法区分y
和None
?
答案 0 :(得分:2)
如果你真的需要知道它没有设置,那就是这样:
NOT_SET = object()
def f(x, y=NOT_SET):
if y is NOT_SET:
# y is not set
这是因为:
>>> a = object()
>>> b = object()
>>> a is b
False