【问题标题】:Unexpected indent in Python function [duplicate]Python函数中的意外缩进[重复]
【发布时间】:2015-07-01 10:01:41
【问题描述】:

我希望我的函数返回编码。用户应该导入它。但是,如果用户点击回车,该函数应返回 windows-1250 作为默认编码。

当我运行这段代码时,我得到一个错误:

如果编码 == '': ^ IndentationError: 意外缩进

def encoding_code(prompt):
    """
    Asks for an encoding,
    throws an error if not valid encoding.
    Empty string is by default windows-1250.
    Returns encoding.
    """
    while True:
        enc = raw_input(prompt)
        if enc == '':
            enc = 'windows-1250'

        try:
            tmp = ''.decode(enc) # Just to throw an error if not correct
        except:
            print('Wrong input. Try again.')
            continue
        break
    return enc

【问题讨论】:

  • 你很可能在混合制表符和空格

标签: python indentation


【解决方案1】:

您正在混合制表符和空格

如果之前你使用了一个空格和两个制表符

在 python 中,你不应该混合使用标签和空格,你应该使用 tabspace

您可以使用python -tt script.py找到它

大多数python开发者更喜欢space to tab

【讨论】:

  • 我使用了 Atom,但代码是用 Sublime 编写的。现在我将所有代码从制表符转换为空格。现在可以了。谢谢。
【解决方案2】:

Python一般要求你代码中的缩进级别相同(一般是4个空格的倍数,基本上和单个制表符一样)。

def encoding_code(prompt):
    """
    Asks for an encoding,
    throws an error if not valid encoding.
    Empty string is by default windows-1250.
    Returns encoding.
    """
    while True:
        enc = raw_input(prompt)
        if enc == '':
            enc = 'windows-1250'

        try:
            tmp = ''.decode(enc) # Just to throw an error if not correct
        except:
            print('Wrong input. Try again.')
            continue
        break
     return enc

【讨论】:

  • 四个空格不等于一个制表符。一个制表符计算多少个空格完全取决于约定和编辑器设置。一个制表符甚至可能需要不同数量的空格,具体取决于它开始的列。
  • 感谢您指出@mkrieger1 你是对的。但许多 Python IDE 默认将制表符设置为 4 个空格。但正确的是,它不必是 4 个空格。此外,在多个 IDE 中,如果您位于 4 的倍数之间的列中,则选项卡会将您带到下一列是 4 的倍数。
猜你喜欢
  • 2011-05-14
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
相关资源
最近更新 更多