作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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
这样就完成了工作,但我想知道是否有更有效的方法来执行此操作,以及是否有办法将一个参数分配给同一函数的另一个参数。提前致谢。
最佳答案
您在此处执行此操作的方式是一种很好且正确的方法:
(稍微清理一下间距以使其更常规)
def search(string, substr, start=0, end=None):
if end is None:
end = len(string)
另一种常用的方法是:
def search(string, substr, start=0, end=None):
end = len(string) if end is None else end
不幸的是,真的没有其他好办法;函数参数不能引用另一个参数,因为只有在定义函数时才会评估默认参数值。在根据定义对它们求值时,不可能对 end=len(string)
求值,因为当它被传递给函数时无法知道 string
是什么。
关于python - 有没有办法将函数参数用作同一函数的另一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55991869/
我是一名优秀的程序员,十分优秀!