From d47aed3b5a2b5aa502ccb9f8a1033da425f74091 Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Wed, 20 Jul 2016 14:23:38 -0300 Subject: [PATCH] more python --- python.html | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 2 deletions(-) diff --git a/python.html b/python.html index c484674..dd302c8 100644 --- a/python.html +++ b/python.html @@ -974,6 +974,134 @@ class MockRoboDeLimpeza(RoboDeLimpeza, MockRobo) +
+
+

Módulos, imports e Namespaces

+ +

Existem dois tipos de módulos:

+ +
    +
  • Arquivos com funções;
  • +
  • Diretórios com arquivos Python.
  • +
+
+ +
+

Arquivos com funções

+ +

modulo.py

+ +

+def funcao(a, b):
+    return a * b
+                        
+
+ +
+

Arquivos com funções

+ +

+>>> import modulo
+>>> modulo.funcao(1, 2)
+                        
+ +

+ No caso, o "namespace" do módulo (modulo) foi + importando para o namespace atual; as funções + permanecem dentro do namespace original. +

+
+ +
+

Arquivos com funções

+ +

+>>> from modulo import funcao
+>>> funcao(1, 2)
+                        
+ +

+ Importado apenas uma função do módulo modulo; + a função é adicionada no namespace atual. +

+
+ +
+

Diretórios com arquivos

+ +

+ Para um diretório ser reconhecido como módulo, é preciso + que exista um arquivo __init__.py dentro dele. +

+ +

+ ... apenas para Python 2; Python 3 removeu + esse requisito. +

+
+ +
+

Diretórios com arquivos

+ +

utils/modulo.py

+ +

+def funcao(a, b):
+    return a * b
+                        
+
+ +
+

Diretórios com arquivos

+ +

+ Sem o arquivo __init__.py, o import falha + (no Python 2) +

+ +

+>>> import utils.module
+Traceback (most recent call last):
+  File "", line 1, in 
+ImportError: No module named utils.module
+                        
+
+ +
+

Diretórios com arquivos

+ +

+ Com o arquivo __init__.py, o import funciona. +

+ +

+>>> import utils.module
+>>> utils.module.funcao(1, 2)
+                        
+
+ +
+

Diretórios com arquivos

+ +

+ Importando o módulo sem o nome do arquivo, é importado o conteúdo + do próprio __init__.py: +

+ +

__init__.py

+ +

+def mult(a, b):
+    return a * b
+                        
+ +

+>>> import utils
+>>> utils.mult(1, 2)
+                        
+
+
+

Mais Esquisitices de Python

@@ -1363,7 +1491,7 @@ class MockRoboDeLimpeza(RoboDeLimpeza, MockRobo)

 >>> a = [1, 2, 3]
->>> [item for item in a if item > 2]
+>>> [item for item in a if item > 2]
 >>> [3]
                         
@@ -1371,7 +1499,7 @@ class MockRoboDeLimpeza(RoboDeLimpeza, MockRobo)

 >>> a = [1, 2, 3]
->>> filter(lambda f: f > 2, a)
+>>> filter(lambda f: f > 2, a)
 >>> [3]