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

Qua*_*ore 0 python

def find (myStr,end=len(mystr)):
          ....
Run Code Online (Sandbox Code Playgroud)

end的默认值应该是len(myStr),但这不起作用.定义函数时会评估默认值,而不是在调用函数时评估.定义find时,myStr尚不存在,因此您无法找到它的长度.

iCo*_*dez 5

为什么不这样做:

def find(myStr, end=None):
    end = len(myStr) if end is None else end
Run Code Online (Sandbox Code Playgroud)

以下是演示:

>>> 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
>>>
Run Code Online (Sandbox Code Playgroud)