Почему функция main ()не определена внутри if ' __main __'?

Вы часто можете увидеть этот (вариант a):

def main():
   do_something()
   do_sth_else()

if __name__ == '__main__':
    main()

И мне вот интересно, почему не этот (вариант б):

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

Или хотя бы этот (вариант с):

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

    main()

Конечно, вызовы функций внутри main()могут не быть вызовами функций, они просто представляют все, что вы можете сделать в своей функции main().

Так почему же люди предпочитают вариант а другим? Это просто стиль/чувство или есть какие-то реальные причины? Если возможно, пожалуйста, также ссылки на источники.

6
задан Gilles 'SO- stop being evil' 2 August 2012 в 11:20
поделиться