Yo prefiero poner las funciones o clases arriba y abajo del todo el main, aunque si hago OO, pues las clases en otro fichero y el main en otro
lo de
if __name__ == "__main__" tiene una utilidad muy grande para mi.
Imagina que haces un programa y escribes un módulo para manejar la base de datos, pues si pones eso, debajo puedes poner código para probar esa libreria, asi que si ejecutas directamente el módulo, pues se ejecutará la prueba, si lo ejecutas desde otro modulo, pues funciona normal.
¿Por qué funciona asi? pues como dice zootropo, __name__ valdrá __main__ cuando se ejecuta directamente, si se ejecuta desde otro módulo, contendrá el nombre de ese módulo, asi que el if no se cumplirá y no se ejecutará el código de prueba.
Bueno, cualquier pregunta que tengas la dices
Un saludo.