我喜欢这样的代码
# -*- coding: utf-8 -*-
class OP(object):
def RECEIVE_MESSAGE(self):
print("done")
def NOTIFIED_INVITE_INTO_GROUP(self):
print("done")
但是当我运行这个时我遇到了一些错误
Traceback (most recent call last):
File "run.py", line 2, in <module>
from van import ERVAN
File "/home/server/.pub/van.py", line 4, in <module>
from op import OP
File "/home/server/.pub/op.py", line 9
def NOTIFIED_INVITE_INTO_GROUP(self):
^
IndentationError: unindent does not match any outer indentation level
任何解决方案?只有10行,但我的想法很棒
答案 0 :(得分:5)
这里的代码中的空格被点替换:
#.-*-.coding:.utf-8.-*-
class.OP(object):
..def.RECEIVE_MESSAGE(self):
......print("done")
..def.NOTIFIED_INVITE_INTO_GROUP(self):
....print("done")
如您所见,第一个print("done")
语句缩进了6个空格 - 将其更改为4以解决问题。
更好的是,根据PEP 8
的建议,更改所有缩进,使它们是4个空格的倍数(即0,4,8,12等)#.-*-.coding:.utf-8.-*-
class.OP(object):
....def.RECEIVE_MESSAGE(self):
........print("done")
....def.NOTIFIED_INVITE_INTO_GROUP(self):
........print("done")
更多细节,来自Python: Myths about Indentation
编译器如何解析缩进?解析是 定义明确,非常简单。基本上,缩进的更改 level作为标记插入到令牌流中。
词法分析器(tokenizer)使用堆栈来存储缩进 水平。在开始时,堆栈只包含值0,即 是最左边的位置。每当嵌套块开始时,新的 缩进级别被推入堆栈,并且&#34; INDENT&#34;令牌是 插入到传递给解析器的令牌流中。那里 永远不会超过一个&#34; INDENT&#34;令牌连续。
当遇到具有较小缩进级别的行时,值 从堆栈中弹出,直到值在顶部,等于 新的缩进级别(如果找不到,则发生语法错误)。