emacs 中的 Python 缩进困惑

标签 python emacs indentation

我正在 emacs 中编辑 python 代码。由于某些未知的原因,有时我在 emacs 中打开 .py 文件,不同的 block 缩进不同,即使它们运行正确。我有一个看起来像这样的 block :

class Foo:
    def __init__(self, params, p):
    """
    Foo
    """
        self.params = params
    self.p = p
    if self.p:
        if (not ('A' in self.params)) or \
                (not 'B' in self.params):
        raise Exception, "Error"

self.params = ... 行的缩进显然与下一行 self.p = p 不同,但代码仍然运行。

造成这种情况的原因是什么?如何解决?

当我运行时:

$ reindent -d ~/code.py

在上面的文件中,没有打印任何内容。

实际上,当我将其粘贴到此文本框中时,它看起来是正确的,直到我按下 {} 按钮使其看起来像代码。知道这里发生了什么吗?不可能编写具有这种行为的代码。

我不认为它混合了制表符和空格,因为 emacs 中的 whitespace-mode 显示:

enter image description here

最佳答案

这不会为我重现。确保您使用的是 Emacs 24.3,并且 emacs -nw -Q 会出现问题。

关于emacs 中的 Python 缩进困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21918619/

相关文章:

windows - 在 Windows 上的 Emacs 中重新定义键

json - 在 Vim 中保存时缩进 JSON

Haskell 缩进不排列函数参数

python - 显示表单内容而不是表单对象名称

python - 如果固定装置在 pytest 中失败,则跳过测试套件

python - Python 列表中的二进制搜索

java - 正确缩进 Java/Kotlin 控制台输出

python - 在 Pyspark 中如何添加列表中的所有值?

emacs - .emacs 文件(脚本)不起作用

emacs - 如何在emacs中用空格替换 '_'