【发布时间】:2016-02-12 12:07:35
【问题描述】:
假设我有一个带有两个参数的函数,x 和 y。如果没有给出y,那么我将根据x 创建一个默认值。当然,我不能用def myfunc(x, y=x+1) 定义函数,因为默认值将在函数的定义 处进行评估,而不是在调用时进行评估。因此,我将使用def myfunc(x, y=None) 定义函数,并在我的函数体中检查y 是否为None,如果是,则将y 重新定义为x + 1。如果y 有可能是任何东西,会怎样?如果None 是一个可能的值呢?即使y 的默认值是None,有没有一种方法可以区分myfunc(4) 和myfunc(4, None)?
【问题讨论】:
-
你的函数不可能处理“任何东西”,所以将默认值设置为永远不会被传递或者你知道你不会处理的东西。
-
@FredrikRosenqvist 如果它是一种新的序列呢?
-
序列是什么意思?举个例子
-
@FredrikRosenqvist 我的意思是 sequence,例如列表、字符串或元组。
-
是的,列表、字符串或元组不是无?没看出有问题,可以用“if type(y) is list”检查类型
标签: python arguments parameter-passing default-arguments