2010-06-01 96 views
17

我有興趣瞭解程序部分之間的新行的Python約定是什麼?例如,考慮一下:Python PEP8:空白行約定

import os 

def func1(): 

def func2(): 

應該是什麼之間的理想換行符分離:

  1. import模塊和 功能?
  2. 函數本身?

我已閱讀PEP8,但我想確認以上兩點。

+0

你閱讀標準庫什麼模塊?許多都是Python編碼風格的絕佳例子。你檢查了哪些? – 2010-06-01 21:09:30

+2

我正在瀏覽os.py,我發現使用了一個新行。這就是我問的原因。 – user225312 2010-06-01 21:20:15

+0

你剛剛讀了一個例子?這似乎並不具有代表性。既然你接受了一個不同意你的樣本數據的答案,這似乎有點奇怪。你不喜歡實際代碼中發現的實際事實?爲什麼不? – 2010-06-02 13:06:34

回答

33
  1. 導入語句和其他代碼之間有兩個空行。
  2. 每個函數之間有兩條空行。
4

如果一個人將與'Blank Lines' section of PEP8檢查 - 人們會發現如下:用兩個空行

環繞頂級函數和類定義。

類中的方法定義被一個空行包圍。

可以使用(節省)額外的空行來分隔相關功能組。在一堆相關的單行程序(例如一組虛擬執行程序)之間可能會省略空白行。

在函數中使用空行以節省邏輯部分。

關於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