【问题标题】:return outside function, or unexpected indent返回外部函数,或意外缩进
【发布时间】:2011-04-11 20:05:34
【问题描述】:

我有这个:

if colorkey is not None:
        if colorkey is -1:
         colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()

它告诉我“返回”在函数之外。

当我把它改成这样时:

if colorkey is not None:
        if colorkey is -1:
         colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
    return image, image.get_rect()

它只是告诉我有一个意外的缩进。我该如何解决这个问题?

【问题讨论】:

  • 这些语句在函数内部吗?
  • 无法阅读。请正确格式化您的代码。
  • 您可以编辑您的帖子以正确排版代码并显示文件中的缩进吗? (缩进 4 个空格以将其呈现为代码)
  • 完成。现在应该可以阅读了。
  • 您说它们在函数内部,但您没有发布函数定义。查看整个函数、定义和主体,将帮助我们告诉您哪里出了问题。

标签: python return indentation


【解决方案1】:

在 python 中,范围由与其他语言相同的缩进级别而不是大括号(即{})定义。

如果你编写一个函数,你需要确保所有函数体的缩进级别相同——无论是相同数量的空格还是相同数量的制表符(混合空格和制表符)可能会导致真正的混乱)。

在您的情况下,正确的缩进看起来类似于(我不确切知道,因为您没有发布整个函数的代码):

def function():
<indent>if colorkey is not None:
<indent><indent>if colorkey is -1:
<indent><indent><indent>colorkey = image.get_at((0,0))
<indent>image.set_colorkey(colorkey, RLEACCEL)
<indent>return image, image.get_rect()

【讨论】:

    【解决方案2】:

    if colorkey is not None:之后有2个缩进,只需要1个

    【讨论】:

    • 嗯,实际上是 8 个空格,可以是 1、2、4 或 8 个缩进。鉴于下一行以 9 个空格开头,它似乎最有可能是 8 个缩进。但无论如何,python 并不关心,因为它只将它解释为一个。
    • 在讨论之前先了解一下词法分析过程。在任何情况下,它都只是一个缩进。上一行以x 空格缩进;当前行由y 空格缩进; x &lt; y -> 添加了一个 indent 令牌。故事结束。
    • @delnan:有多种解释“缩进”一词的方法。我对多个缩进的引用是在编辑器的上下文中。我确实说过“python ...仅将其解释为一个”。
    • @recursive:是的,尽管在这个问题的上下文中,我认为我们应该同意仅在 Python 认为的情况下使用“缩进”。 Python 会产生语法错误,它并不关心 OP 的文本编辑器使用了多少空格。
    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多