2009-09-29 21 views
9

Ho programmato Python per un po 'e ho una buona conoscenza delle sue funzionalità, ma vorrei migliorare il mio stile di codifica. Penso che leggere il codice sorgente dei moduli Python sarebbe una buona idea. Qualcuno può raccomandare qualcuno in particolare?Moduli Python più leggibili

Discussioni correlate:

+0

Ho svalutato sia itertools che Django, poiché entrambi sono come ho imparato Python. +1 per itertools perché è un codice molto buono e un modulo importante da conoscere bene. +1 per Django perché è il codice più stretto che abbia mai visto. –

risposta

18

Queue.py mostra come creare una classe thread-safe e l'uso corretto del modello di progettazione Template Method.

sched.py è un ottimo esempio del modello Dependency Injection.

heapq.py è un'implementazione veramente ben realizzata della struttura dati Heap.

Se dovessi scegliere i miei tre moduli preferiti nella libreria standard Python, questa tripletta sarebbe probabilmente la mia scelta. (Non fa male che sono tutti così molto utili ... ma sto scegliendo in termini di qualità del codice, commenti e design, prima di tutto).

+0

La coda è * fantastica * quando si ha a che fare con la comunicazione di thread. – FogleBird

+0

@FogleBird, d'accordo. Ma così è italools quando si tratta di iteratori ... tuttavia, non ci sono itertools.py, e quando qualcuno sta chiedendo dei buoni moduli Python da leggere, http://svn.python.org/view/python/trunk/Modules/itertoolsmodule.c?revision=73536&view=markup NON è un buon suggerimento! -) L'utilità è un criterio, ma uno secondario alla luce della domanda che è stata effettivamente posta ;-). –

+0

@Alex: non ho accettato che il poster chiedesse di leggere i moduli C per l'implementazione di Python. Se sta chiedendo di migliorare il suo stile di codifica, presumibilmente vorrebbe davvero vedere un buon codice Python e imparare a usare i moduli. Almeno, questo è il modo in cui sto prendendo questa richiesta. Guardando gli anser (che sono dappertutto), direi che la domanda potrebbe sopportare un po 'di riscrittura o messa a fuoco. – hughdbrown

6

Io voto per itertools. Imparerai molto stile di programmazione funzionale usando questo codice, anche se forse non leggendo la fonte.

Per un buon tutorial modulo per modulo, prova il Python Module of the Week di Doug Hellmann. Mi piace anche lo stile/le pratiche di programmazione python esplorate e sviluppate a WordAligned. Mi piace anche lo Peter Norvig's code, in particolare lo spelling corrector code e lo sudoku solver.

Altri moduli interessanti da apprendere: collezioni, operatore, os.path, optparse e i moduli processo/threading.

0

Sto imparando Django e mi piace molto il loro stile di codifica,

http://www.djangoproject.com/

+1

Sebbene ci siano idee interessanti nella fonte di django, ci sono anche molte cose da evitare. In particolare non mi piace usare i globals per tutto, il che rende il django inflessibile. –

+0

Sono nuovo in Python e sto cercando un framework web flessibile. Qual è il tuo suggerimento? –

+0

Django è sicuramente il più popolare, ma spesso lo trovo troppo magico (nascondendo troppo, facendo troppo per me); quindi mi rivolgo spesso a WSGI con helper leggeri (al massimo, alcuni sottoinsiemi di Werkzeug). Ma immagino che sia uno stile peculiare (il lato server è più una webapp che un sito web, la funzionalità "view" delegata a javascript + dojo nel browser) e la maggior parte delle persone preferisce i framework lato server più ricchi/spessi; in questa nicchia i principali contendenti di Django sono Pylons/Turbogears2, o alla fine estremo molto ricco/pesante dello spettro, Zope/Plone. –

0

PEP 8 è lo stile di codifica Python "standard", per qualsiasi versione di "standard" che si desidera utilizzare. =)