使用与无参数不同的默认参数调用的Python函数

时间:2016-02-12 12:07:35

标签: python arguments parameter-passing default-arguments

假设我有一个带有两个参数xy的函数。如果未给出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),我有没有办法区分yNone

1 个答案:

答案 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