gpt4 book ai didi

python - 有没有办法将函数参数用作同一函数的另一个参数?

转载 作者:行者123 更新时间:2023-11-28 18:00:33 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com