2010-06-01 17 views
17

Sono interessato a sapere qual è la convenzione Python per i newline tra le parti del programma? Ad esempio, si consideri questo:Python PEP8: convenzione linee vuote

import os 

def func1(): 

def func2(): 

Quale dovrebbe essere la separazione ideale tra nuova riga:

  1. I import moduli e le funzioni ?
  2. Le funzioni stesse?

Ho letto PEP8, ma volevo confermare i due punti precedenti.

+0

quali moduli nella libreria standard l'hai letto? Molti sono eccellenti esempi di stile di codifica in Python.Quali hai esaminato? –

+2

Sto passando attraverso os.py e vedo che viene utilizzata una sola nuova riga. Questo è il motivo per cui ho chiesto. – user225312

+0

Hai letto esattamente un esempio? Questo non sembra rappresentativo. Dal momento che hai accettato una risposta in disaccordo con i tuoi dati di esempio, sembra un po 'strano. Non ti piacciono i fatti reali trovati nel codice reale? Perchè no? –

risposta

33
  1. Due righe vuote tra le istruzioni di importazione e altro codice.
  2. Due righe vuote tra ciascuna funzione.
4

Se uno sarà verificare con 'Blank Lines' section of PEP8 - si troverà la seguente:

definizioni di funzioni e di classe di alto livello surround con due righe vuote.

Le definizioni dei metodi all'interno di una classe sono racchiuse da un'unica riga vuota.

È possibile utilizzare righe vuote aggiuntive (con parsimonia) per separare i gruppi di funzioni correlate. Le righe vuote possono essere omesse tra un gruppo di one-liner correlati (ad esempio un insieme di implementazioni fittizie).

Utilizzare le righe vuote nelle funzioni, con parsimonia, per indicare le sezioni logiche.

Per quanto riguarda imports, PEP8 afferma:

Importazioni di solito dovrebbe essere su righe separate

...

Le importazioni dovrebbero essere raggruppati nel seguente ordine:

  1. importazioni di librerie standard
  2. relativi alle importazioni di terzi
  3. application/libreria di importazioni specifiche locali

Si dovrebbe mettere una riga vuota tra ogni gruppo di importazioni.

Quindi, per il tuo esempio, la formattazione PEP8 compliant sarebbe:

import os 


def func1(): 


def func2(): 

Solo per dare un esempio più completo:

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 
Problemi correlati