Python PEP8:空行约定

use*_*312 34 python pep8

我有兴趣知道程序部分之间的换行符的Python约定是什么?例如,考虑一下:

import os

def func1():

def func2():
Run Code Online (Sandbox Code Playgroud)

什么应该是理想的换行间隔:

  1. import模块和功能呢?
  2. 功能本身?

我已经阅读了PEP8,但我想确认以上两点.

Bry*_*ley 52

  1. 导入语句和其他代码之间有两个空行.
  2. 每个功能之间有两个空行.

  • 只是一个小小的澄清.恰好在上面的例子中你在导入后放了2个空行,这是由于函数.PEP8表示你必须用2行包围顶级函数,但是如果你在那里有一个常量/全局变量,那么它可能很容易就是1行.从我的观点来看,最重要的是不要总是做一件事情,特别是在风格方面,这是一个主观的话题,但你应该总是做的是与你的项目一致正在努力. (7认同)
  • 截至 2022 年 2 月,PEP8 实际上规定“用两个空行包围顶级函数和类定义”,以及“类内的方法定义用一个空行包围”。 (7认同)

Fil*_* W. 20

如果要查看PEP8的"空白行"部分,可以找到以下内容:

使用两个空行环绕顶级函数和类定义.

类中的方法定义由单个空行包围.

可以使用额外的空白行(谨慎地)来分离相关功能组.在一堆相关的单行(例如,一组虚拟实现)之间可以省略空行.

在函数中使用空行,谨慎地指示逻辑部分.

关于进口,PEP8指出:

进口通常应分开

...

应按以下顺序对导入进行分组:

  1. 标准库导入
  2. 相关的第三方进口
  3. 本地应用程序/库特定导入

您应该在每组导入之间添加一个空行.

因此,对于您的示例,符合PEP8的格式将是:

import os


def func1():


def func2():
Run Code Online (Sandbox Code Playgroud)

只是为了给出更全面的说明:

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
Run Code Online (Sandbox Code Playgroud)