2017-11-06 12 views
2

(A)これは動作します:空白行はPython関数では許可されていませんか?

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

を(B)これは動作しません。

def func(): 
    x = 1 

    print(x)  
    return 

(C)また、これは動作しません。(ここで私は '_' を使用しています

def func(): 
    x = 1 
____# some comment 
    print(x)  
    return 
0:これは、動作(D)

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

)ホワイトスペースを示します(B)及び(C)の両方で

私は次のエラーを取得:

  • NameError:機能外 'リターン'

私は:名 'X' は

  • にSyntaxErrorが定義されていません。 EclipseとPyDevプラグインを使用しています。 Pythonのバージョンは3.5、PyDevのバージョンは4.5です。

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

    1. 問題がJupyterノートブックとPyCharmで再現可能ではありません。

    2. Eclipseでは、「空白文字の表示」をオンにしました。 (C)の字下げは、実際には4つの空白で構成され、エディタでは4ドットで表示されます。タブの場合、Eclipseエディタでは「>>」と表示されます。

    私の調査と以下のコメント/回答を控えて、私はこれがEclipseやPyDevの愚かなバグだと確信しています。

    ありがとうございました。

  • +0

    もちろん、(B)はPythonで動作します。エラーはどこか別の場所にあります。 – VPfB

    +1

    私のコードでは_を使用していません。私はこの質問を明確にするためにこの問題に使っています。 – Jimbo

    +8

    私は再現できません。インデント用にタブとスペースが混在している可能性がありますか? – DavidG

    答えて

    2

    あなたの主な質問に答えて:空白行はPython関数では許可されていませんか?

    空白行は、間違いなくPython関数でが許可されています。

    あなたのすべての例(A、B、C、D)は正常に動作するはずです。問題は恐らく「EclipseとPyDevプラグイン」に関連しています。

    のような他のIDEへの移行を考えてみましょう:

    そして、あなたの開発を支援するためJupyter Notebookを使用することを検討してください。

    4

    ので、彼らは同じではありません、タブとスペースに注意してください:それはちょうど罰金

    に動作します

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

    (_は小枝空間である)と同じではありません。

    (+タブ、_空白である)

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

    動作しません

    +0

    ありがとうございます。これは私のようにPythonを初めて使う人にとっては非常に有益な情報です。しかし、これは私の問題の原因ではありません。私は投票するつもりだが、答えとしてもう一つを選ぶだろう。 – Jimbo

    関連する問題