小编Fra*_*rra的帖子

使用参数数组的长度作为同一函数的另一个参数的默认值

这是我第一次在SO中提出一个问题,所以如果我不知道怎么回事,请不要犹豫,编辑它或者让我修改它.

我认为我的问题很普遍,所以我很惊讶没有找到任何与此主题相关的问题.如果我错过了,这个问题是重复的,如果你能提供一个已经回答的地方的链接,我将非常感激.

想象一下,我需要用(至少)三个参数来实现一个函数:数组a,start索引和end索引.如果未提供,则start参数应引用数组的第一个位置(start = 0),而end参数应设置为最后一个位置(end = len(a) - 1).显然,定义:

def function(a, start = 0, end = (len(a) - 1)):
    #do_something
    pass
Run Code Online (Sandbox Code Playgroud)

不起作用,导致异常(NameError: name 'a' is not defined).有一些解决方法,例如使用end = -1end = None,len(a) - 1如果需要在函数体内有条件地将其分配给:

def function(a, start = 0, end = -1):
    end = end if end != -1 else (len(a) -1)
    #do_something
Run Code Online (Sandbox Code Playgroud)

但我觉得应该有更"pythonic"的方式来处理这种情况,不仅是数组的长度,还有任何参数,其默认值是另一个(非可选)参数的函数.你会如何应对这种情况?条件分配是最佳选择吗?

谢谢!

python python-2.7

3
推荐指数
1
解决办法
1078
查看次数

标签 统计

python ×1

python-2.7 ×1