associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "OrdemDeExecucao"

Diferenças entre as versões de 3 e 4
Revisão 3e 2008-05-27 21:40:13
Tamanho: 2120
Comentário:
Revisão 4e 2008-05-27 21:47:43
Tamanho: 2113
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 3: Linha 3:
Para testar seu conhecimento sobre estas regras, faça o seguinte exercício abaixo. Para testar seu conhecimento sobre estas regras, faça os exercícios abaixo.

Python é uma linguagem dinâmica e interpretada, e não tem um pré-processador (como existe em C). A ordem em que os comandos de um programa Python são executados obedece a algumas regras simples.

Para testar seu conhecimento sobre estas regras, faça os exercícios abaixo.

Exercício 1

Observe que a listagem abaixo possui vários comantos print (e um sys.stdout.write) com marcadores numerados assim: "-> N". Anote em um pedaço de papel em que ordem estes marcadores aparecerão na saída do programa, e depois rode o programa para saber se acertou.

   1 import sys
   2 import atexit
   3 
   4 print '-> 1 inicio'
   5 
   6 def funcaoA():
   7     print '-> 2 funcao A'
   8     return 'resultado A'
   9 
  10 def funcaoB():
  11     print '-> 3 funcao B'
  12 
  13     def funcaoC():
  14         print '-> 4 funcao C'
  15         
  16     return funcaoC
  17     
  18 funcaoD = lambda:sys.stdout.write('-> 5 funcao D\n')
  19 
  20 def funcaoE():
  21     print '-> 6 funcao E'
  22         
  23 class Classe(object):
  24     print '-> 7 bloco de declaracoes da Classe'
  25     
  26     def __init__(self):
  27         print '-> 8 inicializacao da instancia da Classe'
  28         
  29     def metodo(self):
  30         print '-> 9 metodo da instancia da Classe'
  31         return 'resultado metodo'
  32         
  33 if True:
  34     print '-> 10 condicional True'
  35     
  36 if False:
  37     assert False, 'Isso nunca devia acontecer'
  38 
  39 atexit.register(funcaoE)
  40 
  41 print '-> 11 logo antes do if __main__'
  42 
  43 if __name__=='__main__':
  44     print '-> 12 __main__'
  45     print funcaoA
  46     print funcaoA()
  47     print '-> 13 __main__ (cont.)'
  48     print funcaoB
  49     resultadoB = funcaoB()
  50     print resultadoB
  51     objeto = Classe()
  52     objeto.metodo()
  53     resultadoB()
  54     print funcaoD
  55     funcaoD()
  56     print '-> 14 __main__ (final)'
  57 print '-> 15 FIM'    

Exercício 2

O programa abaixo importa o modulo acima. Anote em um pedaço de papel em que ordem os marcadores "-> N" e os pontos I e II aparecerão na saída do programa. Depois rode o programa para saber se acertou.

   1 print '=> ponto I'
   2 
   3 import execucao_pergunta
   4 
   5 print '=> ponto II'