我对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
这就完成了任务,但是我想知道是否有更有效的方法来完成这项工作,是否有一种方法可以将一个参数分配给同一个函数的另一个参数。 提前谢谢。你知道吗
您在这里的做法是一种正确的做法:
(将间距整理得更为常规)
另一种常见的方法是:
不幸的是,没有其他好方法;函数参数不能引用其他参数,因为只有在定义函数时才会计算默认参数值。在定义上求值时,不可能求值
end=len(string)
,因为当传递给函数时,无法知道string
是什么。你知道吗相关问题 更多 >
编程相关推荐