我刚开始学习Python和stackoverflow,正在定义一个类似于内置的find()
函数的Python函数。该函数需要一个字符串和一个子串作为参数,并且有两个可选参数指定起始和结束索引。
我想通过指定默认参数使后两个参数可选。但是默认情况下,我希望结束索引是第一个参数的长度:
def search(string, substr, start = 0, end = len(string)):
lenss = len(substr)
while start < end:
if string[start : lenss] == substr:
return start
start += 1
lenss += 1
return False
但是这会给我一个错误:
Traceback (most recent call last):
def search(string, substr, start = 0, end = len(string)):
NameError: name 'string' is not defined
我尝试的方法是将最后一个参数设置为
None
并添加一个保护条件:def search(string, substr, start = 0, end = None):
if end is None:
end = len(string)
lenss = len(substr)
while start < end:
if string[start : lenss] == substr:
return start
start += 1
lenss += 1
return False
这种方法可以完成任务,但我想知道是否有更高效的方式来做,并且是否有一种将一个参数分配给同一函数的另一个参数的方法。
谢谢提前。
if end is None
而不是==
... - Jon Clements