Erv*_*van 1 python indentation python-3.x
我喜欢这样的代码
# -*- coding: utf-8 -*-
class OP(object):
def RECEIVE_MESSAGE(self):
print("done")
def NOTIFIED_INVITE_INTO_GROUP(self):
print("done")
Run Code Online (Sandbox Code Playgroud)
但当我运行这个我有一些错误
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
Run Code Online (Sandbox Code Playgroud)
对此有何解决方案?它只有10条线,但我的脑海里浮现
这是代码,用圆点代替空格:
#.-*-.coding:.utf-8.-*-
class.OP(object):
..def.RECEIVE_MESSAGE(self):
......print("done")
..def.NOTIFIED_INVITE_INTO_GROUP(self):
....print("done")
Run Code Online (Sandbox Code Playgroud)
如您所见,第一个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")
Run Code Online (Sandbox Code Playgroud)
更多细节,来自Python:关于缩进的神话
编译器如何解析缩进?解析是明确定义的,非常简单.基本上,对缩进级别的更改将作为标记插入到标记流中.
词法分析器(tokenizer)使用堆栈来存储缩进级别.在开始时,堆栈仅包含值0,这是最左边的位置.每当嵌套块开始时,新的缩进级别被推送到堆栈上,并且"INDENT"标记被插入到令牌流中,该令牌流被传递给解析器.连续不能有多个"INDENT"标记.
当遇到具有较小缩进级别的行时,将从堆栈中弹出值,直到值位于顶部,该值等于新缩进级别(如果未找到,则发生语法错误).
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |