def interval(start,stop=None,step=1):
if stop is None:
start, stop=0,start
result=[]
i=start
while i<stop:
result.append(i)
i+=step
return result
如果我通过interval(10)
调用函数,则结果为[0,1,2,3,4,5,6,7,8,9]
。问题是:哪个参数接收10
?我认为应该是stop
,但我不知道该程序是如何做到的。程序为什么知道开始是0
? if stop is None: start,stop=0,start
是什么意思?
答案 0 :(得分:1)
if stop is None:
start, stop=0,start
等同于
if stop is None:
stop = start
start = 0
呼叫interval(10)
等同于呼叫interval(10, None, 1)
。在函数的最开始,start
将是10
,stop
将是None
,但是此if
块将更改start
到0
和stop
到10
。