有可能缩进一个没有特殊句法意义的块吗



是否可以在python中创建缩进块?

考虑以下代码

someCodeHere
try:
st1
st2
except Exception:
pass
otherCode

它确实是缩进的,但它将对异常进行特殊处理。此外,如果我不想捕获异常,我必须提供一个只包含passraise的无用的exceptfinaly

我如何将其写为

someCodeHere
somethingToAllowIndentationWithoutAnyMeaning
st1
st2
otherCode

可以创建一个上下文管理器来实现这一点:

class IndentBlock:
def __enter__(self):
return self
def __exit__(self, typ, vall, track):
return False

现在可以写入

someCodeHere
with IndentBlock():
st1
st2
otherCode

但有可能并不意味着建议这样做众所周知,Python中的缩进具有语法意义。上面的代码确实是正确的,但IMHO可能会让更多的读者感到不安,他们会想知道缩进的理由。

最新更新