Esto le permite usar el mismo archivo como una biblioteca (importándola) o como el punto de partida para una aplicación.
Por ejemplo, considere el siguiente archivo:
# hello.py
def hello(to=__name__):
return "hello, %s" % to
if __name__ == "__main__":
print hello("world")
puede utilizar ese código de dos maneras. Por un lado, puede escribir un programa que lo importe. Si importa la biblioteca, __name__
será el nombre de la biblioteca y por lo tanto la comprobación fallará, y el código no se ejecutará (que es el comportamiento deseado):
#program.py
from hello import hello # this won't cause anything to print
print hello("world")
Si no desea escribir este segundo archivo, puede ejecutar directamente el código de la línea de comandos con algo como:
$ python hello.py
hello, __main__
este comportamiento todo depende de la variable __name__
especial que pitón fijará en función de si la biblioteca ha sido importada o ejecutar directamente por la Interprete. Si se ejecuta directamente, se establecerá en __main__
. Si se importa, se establecerá en el nombre de la biblioteca (en este caso, hello
).
A menudo este constructo se usa para agregar pruebas de unidad a su código. De esta manera, cuando escribe una biblioteca, puede insertar el código de prueba directamente en el archivo sin preocuparse de que se ejecute cuando la biblioteca se utiliza de la manera normal. Cuando desee probar la biblioteca, no necesita ningún marco porque puede ejecutar la biblioteca como si fuera un programa.
Ver también __main__
in the python documentation (aunque es muy escasa)
Oh, ya veo ... 'si __name __ = "__ __ principal":' cheques marchitan el guión es un autónomo o un módulo. – Adobe
Para copiadores y/o para evitar confusiones, tenga en cuenta el error en el comentario anterior: 'if __name __ ==" __ main __ ":' – alberto