Esta es una frecuencia -uso idiom, pero NO es equivalente a Java public static void main(String args[])
. Todo módulos de Python se ejecutan de arriba a abajo todas las declaraciones en el alcance del módulo. Para la mayoría de los módulos importados, estos enunciados generalmente están limitados a las definiciones de clase y método, que configuran valores en el espacio de nombres del módulo, pero en realidad no ejecutan el código de las funciones. Pero si se pone un comunicado en el ámbito de módulo como SPECIAL_CONSTANT = 42
, entonces esto se llevará a cabo inmediatamente cuando el módulo ha sido importada o independiente ejecute - sin necesidad de main()
o __main__
ni nada. Intente poner una declaración print
en la parte superior de un módulo simple. Ya sea que importar ese módulo o bien puede hacerlo por sí mismo desde la línea de comandos, la declaración será print
siempre ejecutar.
Lo bueno de este lenguaje es que le permite incluir algunas pruebas sencillas o código de demostración perfectamente con una biblioteca que normalmente se importa por algún módulo escrito por su cliente. Tal vez algo como esto:
# special_super_duper_module.py
# this next statements will run, even though not in main() or set off
# with "__name__ ==" tests or any such thing
print "You are using special_super_duper_module.py, written by Felix the Cat"
SPECIAL_CONSTANT = 42
def super_duper_function1():
pass
def super_duper_function2():
pass
if __name__ == "__main__":
print "You are running special_super_duper_module.py interactively"
assert super_duper_function1() == None, "expected None, got non-None result"
assert super_duper_function2() == None, "expected None, got non-None result"
# doctests or unittests could also go here, or just a simple demo
Cuando el módulo es importado por un código que quiere usar sus funciones súper duper, a continuación, la pequeña bandera en la tapa se imprimirá, pero el código que se conditionalized por if __name__ etc....
won' t ejecutar. Pero si su usuario ejecuta el módulo directamente con el comando python, se ejecutará la prueba integrada o el código de demostración .
Por el contrario, public static void main(String args[])
es una firma de método especial que le dice a la máquina virtual de Java lo qué método de la clase lo que para empezar. Python solo comienza en la parte superior del módulo nombrado y comienza a ejecutarse desde allí. Es por eso que solo necesita escribir:
print "Hello, World!"
en un módulo por sí solo para escribir su primer programa Python.
JUST me ganó :) – Devoted
es un poco confuso tener también un método llamado 'main (args)' aquí, ya que no hay nada especial que haga que sea invocado por el tiempo de ejecución de python. Es el cheque para '__name __ == '__ main __'' que cuenta –
Eso no es exactamente un retorno 'nulo', ¿o sí?:) –