web-dev-qa-db-ja.com

Python PEP8:空白行の規則

プログラムのパーツ間の改行のPython規約)とは何か知りたいのですが、たとえば、次のように考えてください。

import os

def func1():

def func2():

以下の間の理想的な改行分離は何ですか?

  1. importモジュールと関数?
  2. 機能自体?

PEP8 を読みましたが、上記の2点を確認したいと思います。

37
user225312
  1. Importステートメントと他のコードの間の2つの空白行。
  2. 各関数間の2つの空白行。
57
Bryan Oakley

PEP8の「空白行」セクション で確認すると、次のようになります。

トップレベルの関数とクラスの定義を2つの空白行で囲みます。

クラス内のメソッド定義は、単一の空白行で囲まれています。

関連する関数のグループを区切るために、余分な空白行が(控えめに)使用される場合があります。空白行は、関連する一連のワンライナー(たとえば、ダミーの実装のセット)の間で省略できます。

関数では空白行を控えめに使用して、論理セクションを示します。

imports について、PEP8は次のように述べています。

インポートは通常、別々の行にある必要があります

...

インポートは次の順序でグループ化する必要があります。

  1. 標準ライブラリのインポート
  2. 関連するサードパーティの輸入
  3. ローカルアプリケーション/ライブラリ固有のインポート

インポートの各グループの間に空白行を入れる必要があります。

したがって、例として、PEP8準拠のフォーマットは次のようになります。

import os


def func1():


def func2():

より包括的な説明を与えるために:

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
27
Filipp W.

空白行トップレベルの関数とクラスの定義を2つの空白行で囲みます。

クラス内のメソッド定義は、単一の空白行で囲まれています。

関連する関数のグループを区切るために、余分な空白行が(控えめに)使用される場合があります。空白行は、関連する一連のワンライナー(たとえば、ダミーの実装のセット)の間で省略できます。

関数では空白行を控えめに使用して、論理セクションを示します。

Pythonは、コントロールL(つまり^ L)フォームフィード文字を空白として受け入れます。多くのツールはこれらの文字をページ区切り文字として扱うため、これらを使用してファイルの関連セクションのページを区切ることができます。一部のエディターやWebベースのコードビューアは、control-Lをフォームフィードとして認識せず、代わりに別のグリフを表示する場合があります。

0
Daniel I. Cruz