Entenda o __name__ == "__main__" 
Este artigo é para quem está começando em Python e ainda não entendeu o funcionamento de __name__ == '__main__'
          Quem está começando a aprender Python pode ter dificuldade em entender o que significa o trecho
if __name__ == '__main__':, este artigo tenta explicar isso da forma mais simples possível. Faço apenas uma observação
antes de começarmos: facilita o entendimento se você souber o conceito de módulos e pacotes
na linguagem Python.
Vamos começar com o exemplo abaixo…
"""Módulo principal.
"""
import strformat
def main():
    """Função principal da aplicação.
    """
    print strformat.frmt_bytes(502356)
    print strformat.strip_html("<b>Texto</b>")
if __name__ == "__main__":
    main()
Existem algumas situações aonde queremos que nosso código seja executado apenas sob condições especiais, é o caso dos módulos principais. Só queremos que nossa função
main()seja executada se o módulo for o principal. Caso ele tenha sido importado, a aplicação só deverá ser executada semain()for chamado explicitamente.Fonte Python brasil - Módulos e Pacotes
Confuso? Também acho, então vamos tentar algo mais simples…
Seu script escrito em Python pode ser executado, por exemplo, na linha de comando e também pode ser importado como um módulo. Não se preocupe se você não tem certeza do que é exatamente um módulo, saiba apenas que seu singelo script também é considerado um módulo e, portanto, ele poderá ser importado por outros scripts Python.
Temos dois casos, duas situações. Uma quando executamos seu script diretamente e outra quando importamos seu script para “dentro” de nosso script.
Se você quisesse diferenciar essas duas situações, poderia perguntar “quem está executando o código ?”, é isso o que
__name__ == "__main__" está fazendo, diferenciando os dois casos.
Vamos a um pequeno exemplo. Imagine que você possui um arquivo denominado foo.py e, dentro dele, o seguinte conteúdo:
#
# Script foo.py
#
print(__name__)
Ao executar o script no terminal, descobrimos o valor de __name__:
$ python foo.py
__main__
Se importamos o script como um módulo, veremos que o valor de __name__ foi modificado:
>>> import foo
foo
Vejamos um outro exemplo.
Agora elaboramos uma tomada de decisão com a estrutura if.
#
# Script foo.py
#
if __name__ == '__main__':
    print('me executou pelo terminal')
else:
    print('me executou como um módulo')
Ao executar pelo terminal….
$ python foo.py
me executou pelo terminal
Ao executar como módulo (importando-o)…
>>> import foo
me executou como um módulo
Agora sim, se voltarmos ao texto “lá em cima”, percebemos que:
- temos o módulo principal 
_name__ == "__main__"e - temos o módulo secundário(?) 
_name__ not "__main__" 
Tenha em mente…
# -*- coding: utf-8 -*-
""" Código do módulo principal
"""
if __name__ == '__main__':
    """ Código do módulo secundário
    """
Exemplo
Abaixo temos um exemplo do “hello world” do framework Flask.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"
if __name__ == "__main__":
    app.run()
O mais importante do script é a variável app (segunda linha) que contém a sua aplicação Flask.
Se executarmos o script via terminal, a última linha app.run() será executada e nossa aplicação será inicializada.
Em outro momento, poderemos importar este script para outros scripts e, neste caso, não queremos que a aplicação seja inicializada “automaticamente”.