Compreender o principal método de pitão
Sou novo em Python, mas tenho experiência em outras línguas OOP. O meu curso não explica o método principal em python.
Por favor, diga-me como funciona o método principal em python ? Estou confuso porque estou a tentar compará-lo com Java.
def main():
# display some lines
if __name__ == "__main__": main()
Como é executado o principal e porque preciso deste estranho "se" para executar o "principal". Meu código é terminado sem saída quando eu removo o if
.
O código mínimo...
class AnimalActions:
def quack(self): return self.strings['quack']
def bark(self): return self.strings['bark']
class Duck(AnimalActions):
strings = dict(
quack = "Quaaaaak!",
bark = "The duck cannot bark.",
)
class Dog(AnimalActions):
strings = dict(
quack = "The dog cannot quack.",
bark = "Arf!",
)
def in_the_doghouse(dog):
print(dog.bark())
def in_the_forest(duck):
print(duck.quack())
def main():
donald = Duck()
fido = Dog()
print("- In the forest:")
for o in ( donald, fido ):
in_the_forest(o)
print("- In the doghouse:")
for o in ( donald, fido ):
in_the_doghouse(o)
if __name__ == "__main__": main()
145
3
Em Python, a execução NÃO tem de começar na principal. A primeira linha de "código executável" é executada primeiro.
Saída -**
**Mais no main() -*** http://ibiblio.org/g2swap/byteofpython/read/module-name.html
Um módulo's `nome``
Cada módulo tem um nome e declarações em um módulo pode descobrir o nome do seu módulo. Isso é especialmente útil em uma situação em particular - Como mencionado anteriormente, quando um módulo é importado pela primeira vez, o bloco principal desse módulo é executado. E se quisermos executar o bloco somente se o programa foi utilizado por si mesmo e não quando foi importado de outro módulo? Isto pode ser conseguido utilizando o atributo nome do módulo.
**Utilizando um módulo's nome***
Saída -**
**Como Funciona -***
Cada módulo Python tem um's
__nome__
definido e se este for__main__
, implica que o módulo está sendo executado isoladamente pelo usuário e nós podemos fazer as ações apropriadas correspondentes.Python não tem um ponto de entrada definido como Java, C, C++, etc. Ao invés disso, ele simplesmente executa um arquivo fonte linha por linha. A instrução
if
permite criar uma funçãomain
que será executada se seu arquivo for carregado como o módulo "Main" ao invés de como uma biblioteca em outro módulo.Para ser claro, isto significa que o intérprete Python começa na primeira linha de um arquivo e o executa. Executar linhas como
class Foobar:
edef foobar()
cria uma classe ou uma função e as armazena na memória para uso posterior.Se você importar o arquivo do módulo (.py) que você está criando agora de outro script python, ele não executará o código dentro de
Se você executar o script diretamente do console, ele será executado.
Python não usa ou requer uma função principal(). Qualquer código que não esteja protegido por esse guarda será executado no momento da execução ou da importação do módulo.
Isto é expandido um pouco mais em python.berkely.edu