Python函数中不允许出现空行?

3

(A)这个有效:

def func():
    x = 1
    print(x)    
    return

(B) 这种方法不起作用:

def func():
    x = 1

    print(x)    
    return

(C) 这种写法也不行:(这里我使用“_”表示空格)

def func():
    x = 1
____
    print(x)    
    return

(D) 这个可以工作:

def func():
    x = 1
____# some comment
    print(x)    
    return

在(B)和(C)中我遇到了以下错误:

  • NameError:名称“x”未定义
  • SyntaxError:函数外的'return'

我正在使用Eclipse和PyDev插件。Python版本为3.5,PyDev版本为4.5。

----------更新----------

  1. 在Jupyter Notebook和PyCharm中无法重现该问题。

  2. 在Eclipse中,我已经打开了“显示空格字符”选项。 (C)中的缩进确实由4个空格组成,在编辑器中显示为4个点号。 如果它是一个制表符,在Eclipse编辑器中它将显示为“>> ”。

考虑到我的彻底调查和下面的评论/答案,我相信这是Eclipse和/或PyDev的愚蠢bug。

感谢大家的帮助。


当然在Python中(B)是可以工作的。错误将会出现在其他地方。 - VPfB
1
在我的代码中,我不使用“_”。我在这个问题中使用它是为了清晰明了。 - GoCurry
8
我无法再现。你的缩进可能是制表符和空格混合使用导致的? - DavidG
你的缩进应该有问题了。无论如何,(B) 应该能够正常工作,我刚刚运行它并且符合预期。 - oScarDiAnno
2
你是将这个粘贴到交互式提示符中吗? - glibdud
@glibdud:不... - GoCurry
2个回答

7

请小心制表符和空格,它们并不相同,因此:

(_表示空格)

def func():
____x = 1
____
____print(x)
____return

它可以正常运行

并不等同于

(+是制表符,_是空格)

def func():
++x = 1
__
++print(x)
++return

无法工作


谢谢。这对像我一样初学Python的人非常有用。但这不是我的问题的原因。我会投赞成票,但会选择其他答案作为解决方案。 - GoCurry

3

回答您的主要问题:Python函数中不允许留空行吗?

在Python函数中,绝对允许使用空白行。

您所提供的所有示例(A、B、C、D)都应该可以工作,问题很可能(确信)与"Eclipse和PyDev插件"有关。

考虑迁移到另一个IDE,比如:

并考虑使用Jupyter Notebook来帮助开发。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接