在我拥有的源文件中,有多次出现以下格式(请注意def行后没有缩进):
def sendSystemParms2(self, destAddress, subid, state):
raw = sysparms_format2.build(Container(
length = 0x0D,
command = MT_APP_MSG_CMD0))
def method2(parm2):
print parm2
它正在工作和运行。我很迷惑。任何提示? 我不能上传图片,因为它是新的,没有足够的声誉,但我可以出示证明。
答案 0 :(得分:9)
你有一个使用标签和空格混合的文件。
Python将标签扩展为八个空格,但您正在使用tabstop大小四个空格的编辑器中查看该文件。
函数体使用制表符进行缩进,但def
行使用4个空格代替。就像Python一样,方法体正确缩进。
如果我将文本编辑器设置为使用大小为8个空格的选项卡,然后选择要让编辑器突出显示选项卡的文本,我会看到:
线条表示标签。
这是您不应该使用标签进行缩进的所有的原因之一。 Python style guide建议您仅使用空格进行缩进。在Python 3中,像这样混合制表符和空格是语法错误。
通过使用-tt
command line switch运行Python,您可以告诉Python 2为这种标签和空格组合引发TabError
:
-t
当源文件混合制表符和空格以进行缩进时,发出警告,使其依赖于以空格表示的制表符的价值。选项被给出两次后发出错误( -tt )。