我知道我的遗嘱看起来微不足道,但我不明白为什么“stop”不等于零,因为“start”值已经被覆盖了。但是当我在函数中模拟相同的场景时,它确实会覆盖它。我是否遗漏了什么?
def interval(start, stop =None, step = 1 ):
'Imitates range() for step >0 '
if stop is None:
start, stop = 0, start #since start is already 0, why isn't stop as well?
print start,stop , step
result = []
i = start
while i< stop:
result.append(i)
i+=step
return result
这个表达式
不会被这样评估
但是将通过将两个值同时推送到堆栈来计算,并且前两个值将被旋转(以便交换值),并且这些值将被分配回
start
和stop
。让我们考虑一下如果我们看看反汇编的代码
看起来就像
LOAD_*
操作将把内容加载到堆栈中。如果你看看值
0
和a
中的值被推送到堆栈中,然后ROT_TWO
旋转堆栈顶部两个位置中的值。最后将旋转值分别指定给
a
和b
。相关问题 更多 >
编程相关推荐