web-dev-qa-db-ja.com

pythonで2行の空白行pep8警告を期待

私はvimエディターをpython IDEとして使用しています。以下は、数値の平方根を計算する簡単なpythonプログラムです。

import cmath
def sqrt():
    try:
        num = int(input("Enter the number : "))
        if num >= 0:
            main(num)
        else:
            complex(num)
    except:
        print("OOPS..!!Something went wrong, try again")
        sqrt()
    return

def main(num):
    squareRoot = num**(1/2)
    print("The square Root of ", num, " is ", squareRoot)
    return

def complex(num):
    ans = cmath.sqrt(num)
    print("The Square root if ", num, " is ", ans)
    return

sqrt()

そして、警告は次のとおりです。

1-square-root.py|2 col 1 C| E302 expected 2 blank lines, found 0 [pep8]
1-square-root.py|15 col 1 C| E302 expected 2 blank lines, found 1 [pep8]
1-square-root.py|21 col 1 C| E302 expected 2 blank lines, found 0 [pep8]

これらの警告が表示される理由を教えてください。

enter image description here

21
Amit Upadhyay
_import cmath


def sqrt():
    try:
        num = int(input("Enter the number : "))
        if num >= 0:
            main(num)
        else:
            complex_num(num)
    except:
        print("OOPS..!!Something went wrong, try again")
        sqrt()
    return


def main(num):
    square_root = num**(1/2)
    print("The square Root of ", num, " is ", square_root)
    return


def complex_num(num):
    ans = cmath.sqrt(num)
    print("The Square root if ", num, " is ", ans)
    return

sqrt()
_

前の手順で PEP8 の問題が修正されます。インポート後、コードを開始する前に2行を追加する必要があります。また、各def foo()の間にも2つ必要です。

あなたの場合、インポート後に0があり、各関数間に1つの改行がありました。 PEP8の一部では、コードの終了後に改行する必要があります。残念ながら、ここにコードを貼り付けるときに表示する方法がわかりません。

ネーミングに注意してください。PEP8の一部でもあります。組み込みの complex との混乱を防ぐために、complexを_complex_num_に変更しました。

最終的に、これらは警告に過ぎず、必要に応じて無視できます。

35
Leb

意味のあるコードブロックの間に2つの空白行を入れる必要があります。

以下が含まれます(例)。

  • インポートブロック
  • 各機能
3
Balaji Wanole

ドキュメントへのリンクは次のとおりです。 Python用PEP8スタイルガイド
次に示すように、関数間に2つのスペースを追加する必要があります。

import cmath


def sqrt():
    try:
        num = int(input("Enter the number : "))
        if num >= 0:
            main(num)
        else:
            complex_num(num)
    except:
        print("OOPS..!!Something went wrong, try again")
        sqrt()
    return


def main(num):
    square_root = num ** (1 / 2)
    print("The square Root of ", num, " is ", square_root)
    return


def complex_num(num):
    ans = cmath.sqrt(num)
    print("The Square root if ", num, " is ", ans)
    return


sqrt()
with warnings:-  
import math  
def my():  
    print("hello world")  
my()

Without warnings:-  
import math 


def my():  
    print("hello world")  
my()

ここで、2番目のコードスニペットのimportステートメントの後に2行のスペースが表示される場合、警告は表示されません。繰り返しますが、2つのメソッド定義を書いている場合、2つはコードブロック間のスペースとして2行を与えます。

1
Balaji Wanole

すべての答えは正しいようです。手作業でこれを行わないようにするには、 autopep8 package (pip install autopep8)を使用することもできます。 autopep8 filename.pyを呼び出した結果は同じです:

import cmath


def sqrt():
    try:
        num = int(input("Enter the number : "))
        if num >= 0:
            main(num)
        else:
            complex(num)
    except:
        print("OOPS..!!Something went wrong, try again")
        sqrt()
    return


def main(num):
    squareRoot = num**(1/2)
    print("The square Root of ", num, " is ", squareRoot)
    return


def complex(num):
    ans = cmath.sqrt(num)
    print("The Square root if ", num, " is ", ans)
    return


sqrt()

PS: 外観を見る at if __name__ == "__main__":

1
serv-inc