Python中可能存在混合缩进?
作者:互联网
看this问题,我在机器上尝试了OP的代码.这是text version和屏幕截图:
刚刚发生了什么?这应该是平方函数,并且已正确实现.可以肯定的是,我复制粘贴了代码,然后再次尝试:
好吧,我看不到这些版本的Square之间有任何区别,但只有后者有效.
我能想到的唯一原因是我可能混用了制表符和空格,因此return语句实际上是缩进的,因此循环仅执行一次.但是我无法复制它,它看起来像是解释器的混合缩进检查中令人难以置信的缺陷.所以我有两个问题,或者三个:
>我想念什么?
>如果这是混合压痕,那到底是什么呢?
>如果这是混合缩进,为什么解释器没有抓住它?显然,在python中(以及一般而言)缩进的整个思想都是为了避免此类问题.而且让这种事情溜走太重要了.
解决方法:
简单!
def square(x):
runningtotal = 0
for counter in range(x):
runningtotal = runningtotal + x
<tab>return runningtotal
First, tabs are replaced (from left to right) by one to eight spaces
such that the total number of characters up to and including the
replacement is a multiple of eight <…>
因此,最后一行的此选项卡将替换为8个空格,并进入循环.
标签:cpython,indentation,python 来源: https://codeday.me/bug/20191123/2065548.html