Atom自动缩进脚本破坏了Python缩进

2024-10-03 06:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在初始咖啡自动缩进整个文件的Atom配置文件:

atom.commands.add 'body', 'custom:auto-format', ->
    editor = atom.workspace.getActiveTextEditor();

    oldSelection = editor.getSelectedBufferRanges();

    editor.selectAll();
    editor.autoIndentSelectedRows();

    editor.setSelectedBufferRanges(oldSelection);

对于除了Python之外的所有语言,它都能完美地工作!我对结果很满意。然而,咖啡脚本自动缩进完全搞乱了植物编码。在

它采用以下文件:

^{pr2}$

无法识别阶乘函数的结束位置,因此缩进如下:

import sys

def factorial (n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

        if __name__ == "__main__":
            for arg in sys.argv[1:]:
                n = factorial(int(arg))
                print("The factorial of " + arg + " is " + str(n))

如果有人对如何补救这一点有任何见解,将不胜感激!在


Tags: 文件addreturnif配置文件sysargbody
1条回答
网友
1楼 · 发布于 2024-10-03 06:27:53

你不能自动缩进Python代码,句号。在

自动缩进只适用于那些块由显式的开始和结束标记(如大括号)描述的语言。这种语言中的缩进基本上是可选的,只有人类软件开发人员用来辅助阅读。在

但是在Python中,缩进意味着代码的执行方式会随着缩进而改变。要求软件决定要应用多少缩进,就像要求计算机读懂你的思想,去猜测程序员希望代码从什么开始。在

例如,以下未缩进的代码可以以不同的方式缩进,并导致不同的结果。哪一种解释是正确的?在

var = 'foobar'
for i in range(5):
if var.endswith('bar'):
print('Hello')
if i == 0:
print('World')
break
var += 'spam'
else:
print('!')

if __name__ == '__main__':测试视为顶级语句并不重要。Python不知道,这种测试在Python代码中的任何地方都是合法的,有时甚至可能在函数或类定义中有意义。在

相关问题 更多 >