2012-01-25 10 views
5

Durante la scrittura di script per uso personale, sono abituato a fare questo:due varianti di funzione principale di Python

def do_something(): 
    # Do something. 

if __name__ == '__main__': 
    do_something() 

Oppure, possiamo anche fare questo:

def do_something(): 
    # Do something. 

do_something()  # No if __name__ thingy. 

So che la prima forma è utile quando si distingue tra importare lo script come modulo o chiamarlo direttamente, ma in caso contrario per script che verranno solo eseguiti (e mai importati), c'è qualche motivo per preferire uno rispetto all'altro?

risposta

17

Anche se lo script è pensato solo per essere eseguito, a volte potrebbe essere utile importarlo comunque - in una shell interattiva, con strumenti di generazione della documentazione, in unit test o per cronometrare. Quindi usare regolarmente la forma più generale non guasterà mai.

+0

Grazie, sembra un buon motivo per seguire il primo. –

4

Il primo modulo è solo una buona pratica. Una delle leggi immutabili della scrittura di programmi per computer è che qualcuno in un lontano futuro (come subito dopo essere stato assegnato a un altro progetto o uscire o annoiarsi a mantenere il codice) vorrà usare il tuo script "sempre autonomo", o parti di esso, per qualche altro scopo.

Se supponiamo che tu sia assolutamente un programmatore di rockstar e che ogni carattere dei tuoi file sorgente sia saturo di genio (è vero?), È logico che qualcun altro abbia una visione del tuo materiale illustrativo e essere semplicemente buttato a terra dal tuo genio e vorrà usarlo.

Ora c'è la possibilità di farli tagliare e incollare il codice in un file con il loro nome nella parte superiore, che è molto non-DRY e rende il contributo della tua mente straordinaria accreditato a qualcun altro, o puoi semplicemente aggiungere quel frammento di codice e lasciarli importare il tuo modulo e usare direttamente la classe o la funzione che li ha resi consapevoli di quanto, molto poco sapessero davvero sulla programmazione prima di incontrarla.

La vostra scelta!

+0

E, come ha detto Sven, test! –

+0

Esatto, grazie per le vostre opinioni. –

Problemi correlati