È Pythonico avere un modulo chiamato "funzioni"?

2

Ho un progetto Django. Tutte le app sono separate bene. Ogni app ha spesso funzioni che vengono utilizzate in tutte le app. Attualmente li metto in un modulo chiamato wrappers (per il wrapping di django / built-in / funzioni di terze parti) e shortcuts (per il wrapping di django / built-in / funzioni di terze parti con argomenti hardcoded).

Per le funzioni pure, dove dovrei metterle? attualmente li metto in __init__ file nel livello più alto di ogni app. Quindi per importarli, chiamo semplicemente from project.app import function . Quel Python o creare un modulo chiamato functions all'interno di ogni app è più Pythonic?

Per quanto mi ricordi, non ho mai importato un modulo chiamato "funzioni".

    
posta Abirafdi Raditya Putra 19.11.2017 - 05:59
fonte

1 risposta

7

Immagina un falegname con molti strumenti sul suo banco da lavoro. Come poteva organizzare questi strumenti e parti? Probabilmente, per tipo o applicazione: martelli e pinze, lime e seghe hanno tutti il loro posto. Sembra sensato. Ma cosa succede se li organizza per colore: tutti gli strumenti con una presa gialla vanno da quella parte, tutti gli strumenti con una presa di legno vanno in questo cassetto. Questo è anche uno schema organizzativo legittimo, ma rende difficile trovare gli strumenti con i quali stai lavorando. I pacchetti Python sono anche una sorta di set di strumenti.

I wrapper / scorciatoie / funzioni dello schema di categorizzazione descrivono come sono state create le funzioni in quei pacchetti. Non descrive come queste funzioni saranno effettivamente utilizzate. Quindi, quando ho bisogno di trovare qualche funzione, devo cercare tutti questi pacchetti e quindi forse la documentazione di Django per trovare una funzione adatta. Non so in anticipo se sto cercando una funzione pura che hai scritto o una funzione incartata.

È meglio organizzare il codice per argomento e per scopo. Ad esempio, potresti aver scritto un paio di funzioni che aiutano con la convalida dell'input. Non distribuirli su molti pacchetti, ma organizzali come pacchetto project.myapp.validation .

    
risposta data 19.11.2017 - 11:10
fonte

Leggi altre domande sui tag