2012-08-02 12 views
6

spesso è possibile vedere questo (variante a):Perché la funzione main() non è definita all'interno di if '__main__'?

def main(): 
    do_something() 
    do_sth_else() 

if __name__ == '__main__': 
    main() 

E ora sto chiedendo perché non questo (variante B):

if __name__ == '__main__': 
    do_something() 
    do_sth_else() 

O almeno questo (variazione c):

if __name__ == '__main__': 
    def main(): 
     do_something() 
     do_sth_else() 

    main() 

Naturalmente la funzione di chiamate all'interno main() potrebbe non essere chiamate di funzione, rappresentano solo tutto ciò che si potrebbe desiderare di fare nella propria funzione main().

Quindi perché le persone preferiscono la variazione rispetto alle altre? È solo stile/sentimento o ci sono dei veri motivi? Se possibile, si prega di collegare anche le fonti.

risposta

11

Perché limitare la funzione main() solo all'utilizzo della riga di comando?

Definendo una funzione main() nell'ambito del modulo, è ora possibile avvolgere lo script e modificare il modo in cui viene chiamato. Forse vuoi impostare gli argomenti predefiniti in sys.argv, forse vuoi riutilizzare il codice in un altro script.

4

Questo perché ci sono due modi per utilizzare gli script Python. Uno dalla riga di comando e un altro quando lo si importa da un altro script. Quando lo si esegue dalla riga di comando, si desidera eseguire la funzione main() e al momento dell'importazione potrebbe non essere necessario eseguire la funzione main() finché non è necessaria (è sufficiente importare main()).

Problemi correlati