ожидается, что две пустые строки в Python 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

5 ответов


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 to complex_num для предотвращения путаницы с builtin complex.

в конце концов, они только предупреждение, их можно игнорировать, если это необходимо.


вот ссылка на документацию: руководство по стилю PEP8 для Python
Вы должны добавить два пробела между функциями, как показано ниже:

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()

поскольку python строго следует языку .Вы должны дать два пробела после каждого импорта, а также блок кода.


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

Without warnings:-  
import math 


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

здесь, Если вы видите пространство двух строк после инструкции import для второго фрагмента кода, который не будет давать никаких предупреждений. Опять же, если вы пишете определение двух методов, у вас есть две строки в качестве пространства между вашим блоком кода.


все ответы кажутся правильными. Чтобы избежать этого вручную, вы также можете использовать autopep8 пакета (pip установить 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__":