Two blank lines should be both before and after class definitions. One blank line should be both before and after method definitions. You should use blank lines conservatively within your code to separate groups of functions.
PEP8 says you have to surround top level functions with 2 lines, however if you were to have a constant/global variable there, instead of those functions it could have easily been 1 line.
Surround top-level function and class definitions with two blank lines. Method definitions inside a class are surrounded by a single blank line. Extra blank lines may be used (sparingly) to separate groups of related functions.
If one will check with 'Blank Lines' section of PEP8 — one will find the following:
Surround top-level function and class definitions with two blank lines.
Method definitions inside a class are surrounded by a single blank line.
Extra blank lines may be used (sparingly) to separate groups of related functions. Blank lines may be omitted between a bunch of related one-liners (e.g. a set of dummy implementations).
Use blank lines in functions, sparingly, to indicate logical sections.
Regarding imports, PEP8 states:
Imports should usually be on separate lines
...
Imports should be grouped in the following order:
- standard library imports
- related third party imports
- local application/library specific imports
You should put a blank line between each group of imports.
So, for your example, PEP8 compliant formatting would be:
import os
def func1():
def func2():
Just to give a more comprehensive illustration:
import re
import glob
import sys
import requests
import scrapy
from flask import Flask
from my_local_module import MyClass
def top_level_function1():
pass
def top_level_function2():
pass
class TestClass(object):
def class_method1():
pass
def class_method2():
pass
class TestClass2(object):
def class2_method1():
pass
def class2_method2():
pass
Perfectly explained by user8554766
Just a simple modification
#Standard system imports
import re
import glob
import sys
#Related third party imports
import requests
import scrapy
from flask import Flask
#Local application/library specific imports
from my_local_module import MyClass1, MyClass
Reference
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With