SlideShare a Scribd company logo
1 of 13
Download to read offline
Python:
 Módulos



Claudio Esperança
Módulos
 Módulos são programas feitos para serem
    reaproveitados em outros programas
   Eles tipicamente contêm funções, variáveis, classes e
    objetos que provêm alguma funcionalidade comum
   Por exemplo, já vimos que o módulo math contém
    funções matemáticas como sin, exp, etc, além da
    constante pi
   Toda a biblioteca padrão do Python é dividida em
    módulos e pacotes (veremos mais tarde)
   Alguns dos mais comuns são: sys, os, time, random,
    re, shelve
Escrevendo módulos
 Na verdade, qualquer programa que você escreva e salve
  num arquivo pode ser importado como um módulo
 Por exemplo, se você salva um programa com o nome
  prog.py, ele pode ser importado usando o comando
  import prog
      Entretanto, a “importação” só ocorre uma vez
      Python assume que variáveis e funções não são
       mudados e que o código do módulo serve meramente
       para inicializar esses elementos
 Após a importação de um módulo, este é compilado,
  gerando um arquivo .pyc correspondente
      No exemplo, um arquivo prog.pyc será criado
      Python só recompila um programa se o arquivo .py for
       mais recente que o arquivo .pyc
Exemplo (em Unix)
$ cat teste.py
def f():
    print "alo"
f()
$ python
...
>>> import teste
alo
>>> import teste
>>> teste.f()
alo
>>>
$ dir teste*
teste.py teste.pyc
Tornando módulos disponíveis
 Em que diretório os módulos são buscados durante a
  importação?
    No diretório corrente
    Nos diretórios da lista sys.path
 Se for desejável especificar o local onde os módulos
  residem, há essencialmente duas opções
      Alterar diretamente a variável sys.path
      Alterar a variável de ambiente PYTHONPATH
           É o método recomendável pois não requer que o
            programa que importará o módulo seja alterado
Exemplo
$ mkdir python
$ mv teste.py python/
$ cat python/teste.py
def f():
    print "alo"
f()
$ export PYTHONPATH=~/python
$ python
Python 2.4.2 (#2, Sep 30 2005, 21:19:01)
...
>>> import teste
alo
A variável __name__
 Se um programa pode ser executado por si só ou
  importado dentro de outro, como distinguir as duas
  situações?
      A variável __name__ é definida para cada programa:
           Se é um módulo, retorna o nome do módulo
           Se é um programa sendo executado, retorna '__main__'
 Para saber se o código está sendo executado como
  módulo, basta testar:
      If __name__ == '__main__': código
 Isto é útil em diversas circunstâncias
    Por exemplo, para colocar código de teste, código para
     instalação do módulo ou exemplos de utilização
Exemplo
$ cat teste.py
def f():
    print "alo"
if __name__ == '__main__':
    f()
$ python teste.py
alo
$ python
Python 2.4.2 (#2, Sep 30 2005, 21:19:01)
...
>>> import teste
>>> print __name__
__main__
>>> print teste.__name__
teste
Pacotes
 São hierarquias de módulos
 Um pacote é um diretório que contém um arquivo chamado
  __init__.py
    O pacote deve estar em um dos diretórios nos quais o Python
     busca por módulos
    Para importar o pacote, use o nome do diretório
         O programa correspondente ao pacote é __init__.py
Pacotes
 Os demais arquivos e diretórios dentro do pacote são
  encarados recursivamente como módulos
    Por exemplo, se um pacote se chama p e contém um
     arquivo chamado m.py, então podemos importar
           p (arquivo p/__init__.py)
           p.m (arquivo p/m.py)
      Semelhantemente, p poderia ter um outro pacote sob a
       forma de outro diretório contendo um arquivo
       __init__.py
Exemplo
$ dir python/
pacote teste.py
$ dir python/pacote/
__init__.py teste2.py
$ cat python/teste.py
print "teste"
$ cat python/pacote/__init__.py
print "pacote"
$ cat python/pacote/teste2.py
print "teste2"
$ python
...
>>> import teste
teste
>>> import pacote
pacote
>>> import pacote.teste2
teste2
A variável __all__
 Em princípio, todos os nomes definidos num módulo são
  disponibilizados quando o módulo é importado
      As exceções são nomes que começam com um “_”
 Para restringir os nomes que se quer exportar, usa-se a
  variável __all__
      É uma lista de strings de nomes de objetos (variáveis,
       classes, funções) que serão exportados
Exemplo
$ cat test.py
def f (): print "f"
def g(): print "g"
h = 5
__all__ = ["h","g"]
$ python
...
>>> from test import *
>>> h
5
>>> g
<function g at 0xb7c9a17c>
>>> f
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'f' is not defined

More Related Content

What's hot (17)

Tutorial Rodando Python no C#
Tutorial Rodando Python no C#Tutorial Rodando Python no C#
Tutorial Rodando Python no C#
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Python 03
Python 03Python 03
Python 03
 
Java recursos avançados - streams
Java   recursos avançados - streamsJava   recursos avançados - streams
Java recursos avançados - streams
 
Al sweigart, cap 3
Al sweigart, cap 3Al sweigart, cap 3
Al sweigart, cap 3
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
 
Aula05
Aula05Aula05
Aula05
 
Python com TDD
Python com TDDPython com TDD
Python com TDD
 
Python Funcional
Python FuncionalPython Funcional
Python Funcional
 
Python com r (mini projeto)
Python com r (mini projeto)Python com r (mini projeto)
Python com r (mini projeto)
 
Puppet 3 em 2017
Puppet 3 em 2017Puppet 3 em 2017
Puppet 3 em 2017
 
Curso De Shell Aula 3
Curso De Shell   Aula 3Curso De Shell   Aula 3
Curso De Shell Aula 3
 
44087090 tutorial-programacao-batch
44087090 tutorial-programacao-batch44087090 tutorial-programacao-batch
44087090 tutorial-programacao-batch
 
Java5
Java5Java5
Java5
 
Python 01
Python 01Python 01
Python 01
 
Desenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECLDesenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECL
 

Viewers also liked

Ensinando Computação e Fazendo Ciência com Python
Ensinando Computação e Fazendo Ciência com PythonEnsinando Computação e Fazendo Ciência com Python
Ensinando Computação e Fazendo Ciência com PythonLuiz Cláudio Silva
 
Python - o que, porque, como e quando
Python - o que, porque, como e quandoPython - o que, porque, como e quando
Python - o que, porque, como e quandoGustavo Carvalho
 
Introdução a automação residencial com Raspberry PI
Introdução a automação residencial com Raspberry PIIntrodução a automação residencial com Raspberry PI
Introdução a automação residencial com Raspberry PIRogerio Alencar Filho
 
Espaço Programação e Eletrónica - Sessão4
Espaço Programação e Eletrónica - Sessão4Espaço Programação e Eletrónica - Sessão4
Espaço Programação e Eletrónica - Sessão4Ana Carneirinho
 
Astro Pi - Explorando o Sense Hat
Astro Pi - Explorando o Sense HatAstro Pi - Explorando o Sense Hat
Astro Pi - Explorando o Sense HatAna Carneirinho
 
Astro Pi - introdução ao Python
Astro Pi - introdução ao PythonAstro Pi - introdução ao Python
Astro Pi - introdução ao PythonAna Carneirinho
 
Livraria Sense hat - resumo
Livraria Sense hat - resumoLivraria Sense hat - resumo
Livraria Sense hat - resumoAna Carneirinho
 
Python: A Arma Secreta do Cientista de Dados
Python: A Arma Secreta do Cientista de DadosPython: A Arma Secreta do Cientista de Dados
Python: A Arma Secreta do Cientista de DadosRodrigo Senra
 
Astro pi - Como recolher dados do astro Pi
Astro pi - Como recolher dados do astro PiAstro pi - Como recolher dados do astro Pi
Astro pi - Como recolher dados do astro PiAna Carneirinho
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 
Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Walter Coan
 
EV3#5: Exercicios com o sensor cor
EV3#5: Exercicios com o sensor corEV3#5: Exercicios com o sensor cor
EV3#5: Exercicios com o sensor corAna Carneirinho
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 

Viewers also liked (15)

Ensinando Computação e Fazendo Ciência com Python
Ensinando Computação e Fazendo Ciência com PythonEnsinando Computação e Fazendo Ciência com Python
Ensinando Computação e Fazendo Ciência com Python
 
Python - o que, porque, como e quando
Python - o que, porque, como e quandoPython - o que, porque, como e quando
Python - o que, porque, como e quando
 
Introdução a automação residencial com Raspberry PI
Introdução a automação residencial com Raspberry PIIntrodução a automação residencial com Raspberry PI
Introdução a automação residencial com Raspberry PI
 
Espaço Programação e Eletrónica - Sessão4
Espaço Programação e Eletrónica - Sessão4Espaço Programação e Eletrónica - Sessão4
Espaço Programação e Eletrónica - Sessão4
 
Astro Pi - Explorando o Sense Hat
Astro Pi - Explorando o Sense HatAstro Pi - Explorando o Sense Hat
Astro Pi - Explorando o Sense Hat
 
Astro Pi - introdução ao Python
Astro Pi - introdução ao PythonAstro Pi - introdução ao Python
Astro Pi - introdução ao Python
 
Livraria Sense hat - resumo
Livraria Sense hat - resumoLivraria Sense hat - resumo
Livraria Sense hat - resumo
 
Raspberry Pi: o hardware para Python
Raspberry Pi: o hardware para PythonRaspberry Pi: o hardware para Python
Raspberry Pi: o hardware para Python
 
Python: A Arma Secreta do Cientista de Dados
Python: A Arma Secreta do Cientista de DadosPython: A Arma Secreta do Cientista de Dados
Python: A Arma Secreta do Cientista de Dados
 
Astro pi - Como recolher dados do astro Pi
Astro pi - Como recolher dados do astro PiAstro pi - Como recolher dados do astro Pi
Astro pi - Como recolher dados do astro Pi
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)
 
EV3#5: Exercicios com o sensor cor
EV3#5: Exercicios com o sensor corEV3#5: Exercicios com o sensor cor
EV3#5: Exercicios com o sensor cor
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 

Similar to Python Módulos: Importação e Estrutura

12 programando em python - modulos
 12   programando em python - modulos 12   programando em python - modulos
12 programando em python - modulosVictor Marcelino
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Natanael Fonseca
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
Gerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no LinuxGerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no LinuxElexsandro Rangel
 
07 programando em python - funcoes
 07   programando em python - funcoes 07   programando em python - funcoes
07 programando em python - funcoesVictor Marcelino
 
Técnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoTécnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoMario Chaves
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do GoogleLuciano Ramalho
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLJuliano Atanazio
 

Similar to Python Módulos: Importação e Estrutura (20)

12 programando em python - modulos
 12   programando em python - modulos 12   programando em python - modulos
12 programando em python - modulos
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Workshop Python.2
Workshop Python.2Workshop Python.2
Workshop Python.2
 
Programando em Python - Funções
Programando em Python -  FunçõesProgramando em Python -  Funções
Programando em Python - Funções
 
aula5_python.pdf
aula5_python.pdfaula5_python.pdf
aula5_python.pdf
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Aula5
Aula5Aula5
Aula5
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Introdução à linguagem python
Introdução à linguagem pythonIntrodução à linguagem python
Introdução à linguagem python
 
Gerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no LinuxGerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no Linux
 
07 programando em python - funcoes
 07   programando em python - funcoes 07   programando em python - funcoes
07 programando em python - funcoes
 
Técnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoTécnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em django
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
Java
JavaJava
Java
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQL
 
Java7
Java7Java7
Java7
 

More from samuelthiago

Interface grafica em_java_parte_v
Interface grafica em_java_parte_vInterface grafica em_java_parte_v
Interface grafica em_java_parte_vsamuelthiago
 
Interface grafica em_java_parte_iv
Interface grafica em_java_parte_ivInterface grafica em_java_parte_iv
Interface grafica em_java_parte_ivsamuelthiago
 
Interface grafica em_java_parte_iii
Interface grafica em_java_parte_iiiInterface grafica em_java_parte_iii
Interface grafica em_java_parte_iiisamuelthiago
 
Interface grafica em_java_parte_ii
Interface grafica em_java_parte_iiInterface grafica em_java_parte_ii
Interface grafica em_java_parte_iisamuelthiago
 
Interface grafica em_java_parte_i
Interface grafica em_java_parte_iInterface grafica em_java_parte_i
Interface grafica em_java_parte_isamuelthiago
 
Poo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_iiPoo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_iisamuelthiago
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_jsamuelthiago
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_javasamuelthiago
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_jsamuelthiago
 
01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)samuelthiago
 

More from samuelthiago (20)

Eclipse i (1)
Eclipse i (1)Eclipse i (1)
Eclipse i (1)
 
Html básico
Html básicoHtml básico
Html básico
 
Interface grafica em_java_parte_v
Interface grafica em_java_parte_vInterface grafica em_java_parte_v
Interface grafica em_java_parte_v
 
Interface grafica em_java_parte_iv
Interface grafica em_java_parte_ivInterface grafica em_java_parte_iv
Interface grafica em_java_parte_iv
 
Interface grafica em_java_parte_iii
Interface grafica em_java_parte_iiiInterface grafica em_java_parte_iii
Interface grafica em_java_parte_iii
 
Interface grafica em_java_parte_ii
Interface grafica em_java_parte_iiInterface grafica em_java_parte_ii
Interface grafica em_java_parte_ii
 
Interface grafica em_java_parte_i
Interface grafica em_java_parte_iInterface grafica em_java_parte_i
Interface grafica em_java_parte_i
 
Poo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_iiPoo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_ii
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_j
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_java
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_j
 
01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)
 
Java 08
Java 08Java 08
Java 08
 
Java 07
Java 07Java 07
Java 07
 
Java 06
Java 06Java 06
Java 06
 
Java 05
Java 05Java 05
Java 05
 
Java 04
Java 04Java 04
Java 04
 
Java 03
Java 03Java 03
Java 03
 
Java 02
Java 02Java 02
Java 02
 
Java 01
Java 01Java 01
Java 01
 

Python Módulos: Importação e Estrutura

  • 2. Módulos  Módulos são programas feitos para serem reaproveitados em outros programas  Eles tipicamente contêm funções, variáveis, classes e objetos que provêm alguma funcionalidade comum  Por exemplo, já vimos que o módulo math contém funções matemáticas como sin, exp, etc, além da constante pi  Toda a biblioteca padrão do Python é dividida em módulos e pacotes (veremos mais tarde)  Alguns dos mais comuns são: sys, os, time, random, re, shelve
  • 3. Escrevendo módulos  Na verdade, qualquer programa que você escreva e salve num arquivo pode ser importado como um módulo  Por exemplo, se você salva um programa com o nome prog.py, ele pode ser importado usando o comando import prog  Entretanto, a “importação” só ocorre uma vez  Python assume que variáveis e funções não são mudados e que o código do módulo serve meramente para inicializar esses elementos  Após a importação de um módulo, este é compilado, gerando um arquivo .pyc correspondente  No exemplo, um arquivo prog.pyc será criado  Python só recompila um programa se o arquivo .py for mais recente que o arquivo .pyc
  • 4. Exemplo (em Unix) $ cat teste.py def f(): print "alo" f() $ python ... >>> import teste alo >>> import teste >>> teste.f() alo >>> $ dir teste* teste.py teste.pyc
  • 5. Tornando módulos disponíveis  Em que diretório os módulos são buscados durante a importação?  No diretório corrente  Nos diretórios da lista sys.path  Se for desejável especificar o local onde os módulos residem, há essencialmente duas opções  Alterar diretamente a variável sys.path  Alterar a variável de ambiente PYTHONPATH  É o método recomendável pois não requer que o programa que importará o módulo seja alterado
  • 6. Exemplo $ mkdir python $ mv teste.py python/ $ cat python/teste.py def f(): print "alo" f() $ export PYTHONPATH=~/python $ python Python 2.4.2 (#2, Sep 30 2005, 21:19:01) ... >>> import teste alo
  • 7. A variável __name__  Se um programa pode ser executado por si só ou importado dentro de outro, como distinguir as duas situações?  A variável __name__ é definida para cada programa:  Se é um módulo, retorna o nome do módulo  Se é um programa sendo executado, retorna '__main__'  Para saber se o código está sendo executado como módulo, basta testar:  If __name__ == '__main__': código  Isto é útil em diversas circunstâncias  Por exemplo, para colocar código de teste, código para instalação do módulo ou exemplos de utilização
  • 8. Exemplo $ cat teste.py def f(): print "alo" if __name__ == '__main__': f() $ python teste.py alo $ python Python 2.4.2 (#2, Sep 30 2005, 21:19:01) ... >>> import teste >>> print __name__ __main__ >>> print teste.__name__ teste
  • 9. Pacotes  São hierarquias de módulos  Um pacote é um diretório que contém um arquivo chamado __init__.py  O pacote deve estar em um dos diretórios nos quais o Python busca por módulos  Para importar o pacote, use o nome do diretório  O programa correspondente ao pacote é __init__.py
  • 10. Pacotes  Os demais arquivos e diretórios dentro do pacote são encarados recursivamente como módulos  Por exemplo, se um pacote se chama p e contém um arquivo chamado m.py, então podemos importar  p (arquivo p/__init__.py)  p.m (arquivo p/m.py)  Semelhantemente, p poderia ter um outro pacote sob a forma de outro diretório contendo um arquivo __init__.py
  • 11. Exemplo $ dir python/ pacote teste.py $ dir python/pacote/ __init__.py teste2.py $ cat python/teste.py print "teste" $ cat python/pacote/__init__.py print "pacote" $ cat python/pacote/teste2.py print "teste2" $ python ... >>> import teste teste >>> import pacote pacote >>> import pacote.teste2 teste2
  • 12. A variável __all__  Em princípio, todos os nomes definidos num módulo são disponibilizados quando o módulo é importado  As exceções são nomes que começam com um “_”  Para restringir os nomes que se quer exportar, usa-se a variável __all__  É uma lista de strings de nomes de objetos (variáveis, classes, funções) que serão exportados
  • 13. Exemplo $ cat test.py def f (): print "f" def g(): print "g" h = 5 __all__ = ["h","g"] $ python ... >>> from test import * >>> h 5 >>> g <function g at 0xb7c9a17c> >>> f Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'f' is not defined