diff --git a/fugindo-com-python-2.html b/fugindo-com-python-2.html index b0da75a..052f7c1 100644 --- a/fugindo-com-python-2.html +++ b/fugindo-com-python-2.html @@ -153,26 +153,32 @@ def switch_two(): print_phrase(CONSONANTS) +def unknown(): + """We don't know what to do.""" + print('Dude, option!') + + if __name__ == "__main__": args = ArgumentParser() args.add_argument('-t', '--totally', - dest='totally', - default=False, - action='store_true', + dest='type', + action='store_const', + const='totally', help='Like, toootaly random') args.add_argument('-s', '--short', - dest='short', - default=False, - action='store_true', + dest='type', + action='store_const', + const='switch' help='Not so random') result = args.parse_args() - if result.totally: - totally_random() - elif result.short: - switch_two() - else: - print('Dude, option!') + callbacks = { + 'totally': totally_random, + 'switch': switch_two + } + + func = callbacks.get(result.type, unknown) + func() @@ -646,9 +652,9 @@ frase.capitalize() print(PASSPHRASE.format(*consonants).capitalize()) - +
@@ -690,10 +696,10 @@ frase.capitalize() Bem vindo Júlio! - +
@@ -708,283 +714,319 @@ PASSPHRASE.format('f', 'j', 'c', 'l', 'n') 'fujam para as colinas' - +
-
-

Welcome to... Hell

- -

+                    
+

Welcome to... Hell

+ +

 CONSONANTS = ['f', 'j', 'c', 'l', 'n']
 PASSPHRASE = '{}u{}am para as {}o{}i{}as'
 PASSPHRASE.format(*CONSONANTS)
-						
+
-

+                        

 'fujam para as colinas'
-						
+
- -
+ + -
-

Welcome to... Hell?

+
+

Welcome to... Hell?

-

+                        

 'fujam para as colinas'.capitalize()
-						
+
-

+                        

 Fujam para as colinas
-						
+
- -
+ +
-
-
-

Randomizações

+
+
+

Randomizações

-

+                        

 def totally_random():
     """Run a totally random way."""
     random.shuffle(CONSONANTS)
     print_phrase(CONSONANTS)
-						
+
-
+ O único problema aqui é que `shuffle` faz *in-place*, + ou seja, a lista vai ter o conteúdo alterado. + +
-
-

Randomizações

+
+

Randomizações

-

+                        

 def switch_two():
     """Run by changing two steps at a time."""
     first = random.randint(0, 1)
     second = random.randint(2, 4)
-						
+
-
-
+ ... que, se a gente contar, são exatamente as posições das + consoantes de "fujam" e de "colinas", respecticamente, + começando por 0. + +
+
-
-
-

Welcome to hell, maybe?

+
+
+

Welcome to hell, maybe?

-

+                        

     CONSONANTS[second], CONSONANTS[first] = \
         CONSONANTS[first], CONSONANTS[second]
-						
-
+ +
-
-

Welcome to Listas!

+
+

Welcome to Listas!

-

+                        

 # CONSONANTS = ['f', 'j', 'c', 'l', 'n']
 # second = random.randint(2, 4)
 CONSONANTS[second]
-						
+
- -
+ +
-
-

Welcome to Tuples!

+
+

Welcome to Tuples!

-

- Tuplas são como listas, só que - não podem ser alteradas. -

+

+ Tuplas são como listas, só que + não podem ser alteradas. +

-

- E pra criar uma tupla: -

+

+ E pra criar uma tupla: +

-

+                        

 valor, valor
-						
+
-

Ou mais bonitinho: (valor, valor)

-
+

Ou mais bonitinho: (valor, valor)

+
-
-

Welcome to Destructuring

+
+

Welcome to Destructuring

-

+                        

 primeiro, segundo = [1, 2]
 print(primeiro)
 print(segundo)
-						
+
-

+                        

 1
 2
-						
+
-
+ E se o número de váriaveis estiver errado, + dá erro. + +
-
-

Tudo junto, agora!

+
+

Tudo junto, agora!

-

+                        

     CONSONANTS[second], CONSONANTS[first] = \
         CONSONANTS[first], CONSONANTS[second]
-						
+
-

+                        

 tmp = CONSONANTS[first]
 CONSONANTS[first] = CONSONANTS[second]
 CONSONANTS[second] = tmp
-						
- - -
-
- -
-
-

O Pai de Todos Módulos

- -

+                        
+ + +
+
+ +
+
+

O Pai de Todos Módulos

+ +

 if __name__ == "__main__":
-						
+
-
-
+ No caso, todo o conteúdo desse if só vai + ser executado se for executado pela linha + de comando. Se for importado por um outro + script, o script vai ter acesso às funções, + mas não vai ser afetado pela leitura da + linha de comando. + +
+
-
-
-

A linha de comando

+
+
+

A linha de comando

-

+                        

     args = ArgumentParser()
     args.add_argument('-t', '--totally',
-                      dest='totally',
-                      default=False,
-                      action='store_true',
+                      dest='type',
+                      action='store_const',
+                      const='totally',
                       help='Like, toootaly random')
     args.add_argument('-s', '--short',
-                      dest='short',
-                      default=False,
-                      action='store_true',
+                      dest='type',
+                      action='store_const',
+                      const='switch'
                       help='Not so random')
     result = args.parse_args()
-						
- - -
-
- -
-
-

E os finalmentes...

- -

-    if result.totally:
-        totally_random()
-    elif result.short:
-        switch_two()
-    else:
-        print('Dude, option!')
- - -
-
+
+ + +
+
+ +
+
+

Funções são cidadãos de primeira classe

+ +

+    callbacks = {
+        'totally': totally_random,
+        'switch': switch_two
+    }
+    func = callbacks.get(result.type, unknown)
+    func()
+                        
+ + +
+
+ +
+
+

Fulindo para as Cojinas com Python

+
+ +
+

Fucindo para as Lonijas com Python

+
+