一个参数默认值取决于len(otherArgument)

时间:2013-12-30 20:04:14

标签: python

def find (myStr,end=len(mystr)):
          ....

end的默认值应为len(myStr), 但这不起作用。定义函数时会评估默认值,而不是在调用函数时评估。当定义了find时,myStr还不存在,所以你找不到它的长度。

1 个答案:

答案 0 :(得分:5)

为什么不这样做:

def find(myStr, end=None):
    end = len(myStr) if end is None else end

以下是演示:

>>> def find(myStr, end=None):
...     end = len(myStr) if end is None else end
...     print end
...
>>> # end is set to the supplied value
>>> find("abc", 10)
10
>>> # end is set to the length of myStr (its default value)
>>> find("abc")
3
>>>