Ожидаемые две пустые строки pep8 предупреждение в python
Я использую редактор 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]()
Ответы
Ответ 1
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_num
, чтобы предотвратить путаницу со встроенным complex
.
В конце концов, они только предупреждают, их можно игнорировать при необходимости.
Ответ 2
Вам нужно дать две пустые строки между значимыми блоками кода.
К ним относятся (например):
- Блок импорта
- Каждая функция
Ответ 3
Вот ссылка на документацию: Руководство по стилю 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()
Ответ 4
with warnings:-
import math
def my():
print("hello world")
my()
Without warnings:-
import math
def my():
print("hello world")
my()
Здесь, если вы видите пробел двух строк после оператора импорта для второго фрагмента кода, который не даст никаких предупреждений.
Опять же, если вы пишете два определения методов, у вас есть два, укажите две строки как пробел между вашим блоком кода.
Ответ 5
Все ответы кажутся правильными. Чтобы избежать этого вручную, вы также можете использовать пакет autopep8
(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: посмотрите, if __name__ == "__main__":