SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados (17)

PDF
Tutorial Rodando Python no C#
Eduardo S. Pereira
 
PDF
Python e django na prática
Rafael Cassau
 
KEY
Python 03
Bruno Catão
 
PDF
Java recursos avançados - streams
Armando Daniel
 
PDF
Curso de Java: Introdução a lambda e Streams
Helder da Rocha
 
PDF
Desenvolvendo Extensões PECL
W3P Projetos Web
 
PPTX
Aula05
Natanael Fonseca
 
PDF
Python com TDD
Rodrigo Alves Vieira
 
PDF
Python Funcional
pugpe
 
PDF
Python com r (mini projeto)
Danilo Costa
 
PDF
Puppet 3 em 2017
Taciano Tres
 
PDF
Curso De Shell Aula 3
Felipe Santos
 
PDF
44087090 tutorial-programacao-batch
Marcio Pereira
 
KEY
Python 01
Bruno Catão
 
PDF
Desenvolvimento de Extensões PECL
Erick Belluci Tedeschi
 
Tutorial Rodando Python no C#
Eduardo S. Pereira
 
Python e django na prática
Rafael Cassau
 
Python 03
Bruno Catão
 
Java recursos avançados - streams
Armando Daniel
 
Curso de Java: Introdução a lambda e Streams
Helder da Rocha
 
Desenvolvendo Extensões PECL
W3P Projetos Web
 
Python com TDD
Rodrigo Alves Vieira
 
Python Funcional
pugpe
 
Python com r (mini projeto)
Danilo Costa
 
Puppet 3 em 2017
Taciano Tres
 
Curso De Shell Aula 3
Felipe Santos
 
44087090 tutorial-programacao-batch
Marcio Pereira
 
Python 01
Bruno Catão
 
Desenvolvimento de Extensões PECL
Erick Belluci Tedeschi
 

Destaque (15)

PDF
Ensinando Computação e Fazendo Ciência com Python
Luiz Cláudio Silva
 
PDF
Python - o que, porque, como e quando
Gustavo Carvalho
 
PPTX
Introdução a automação residencial com Raspberry PI
Rogerio Alencar Filho
 
PPTX
Espaço Programação e Eletrónica - Sessão4
Ana Carneirinho
 
PDF
Astro Pi - Explorando o Sense Hat
Ana Carneirinho
 
PDF
Astro Pi - introdução ao Python
Ana Carneirinho
 
PDF
Livraria Sense hat - resumo
Ana Carneirinho
 
ODP
Raspberry Pi: o hardware para Python
Marcelo Laranjeira Melo
 
PDF
Python: A Arma Secreta do Cientista de Dados
Rodrigo Senra
 
PDF
Astro pi - Como recolher dados do astro Pi
Ana Carneirinho
 
PPTX
Palestra Apresentando Python e Suas Aplicações
Marcos Thomaz
 
PPTX
Palestra sobre Arduino e Raspberry Pi (Totvs)
Walter Coan
 
PDF
EV3#5: Exercicios com o sensor cor
Ana Carneirinho
 
PDF
Canivete python
Anderson Dantas
 
PDF
Oficina Python: Hackeando a Web com Python 3
Marcel Caraciolo
 
Ensinando Computação e Fazendo Ciência com Python
Luiz Cláudio Silva
 
Python - o que, porque, como e quando
Gustavo Carvalho
 
Introdução a automação residencial com Raspberry PI
Rogerio Alencar Filho
 
Espaço Programação e Eletrónica - Sessão4
Ana Carneirinho
 
Astro Pi - Explorando o Sense Hat
Ana Carneirinho
 
Astro Pi - introdução ao Python
Ana Carneirinho
 
Livraria Sense hat - resumo
Ana Carneirinho
 
Raspberry Pi: o hardware para Python
Marcelo Laranjeira Melo
 
Python: A Arma Secreta do Cientista de Dados
Rodrigo Senra
 
Astro pi - Como recolher dados do astro Pi
Ana Carneirinho
 
Palestra Apresentando Python e Suas Aplicações
Marcos Thomaz
 
Palestra sobre Arduino e Raspberry Pi (Totvs)
Walter Coan
 
EV3#5: Exercicios com o sensor cor
Ana Carneirinho
 
Canivete python
Anderson Dantas
 
Oficina Python: Hackeando a Web com Python 3
Marcel Caraciolo
 
Anúncio

Semelhante a Programando em python modulos (20)

PDF
12 programando em python - modulos
Victor Marcelino
 
PDF
Programando para web com python - Introdução a Python
Alvaro Oliveira
 
ODP
Workshop Python.2
Marcelo Lira
 
PDF
Programando em Python - Funções
IFRN -campus Ipanguaçu
 
PDF
aula5_python.pdf
NonatoColaresColares2
 
PPTX
Curso Java Básico - Aula 04
Natanael Fonseca
 
PDF
Curso de Python (Básico) - Português
Helio Colombe
 
PDF
Linguagem de Programação Python
Junior Sobrenome
 
PPT
Aula5
softeam
 
ODP
Qualidade no desenvolvimento de software com PHPUnit
Diego Tremper
 
PPT
Introdução à linguagem python
Luiz Vieira .´. CISSP, OSCE, GXPN, CEH
 
PDF
Gerenciamento de Pacotes no Linux
Elexsandro Rangel
 
PDF
07 programando em python - funcoes
Victor Marcelino
 
PPT
Técnicas para preparação e desenvolvimento de sites em django
Mario Chaves
 
PDF
Computação Científica com SciPy - Brevíssimo Tutorial
Fabio Spanhol
 
KEY
Python, a arma secreta do Google
Luciano Ramalho
 
PDF
Programacao de Computadores e Robocode PDF
Luciano Seibel
 
PPT
Java
bielgott
 
PPT
Curso Java Basico
Jamildo Feitosa
 
PDF
PL/Python: Programando em Python no PostgreSQL
Juliano Atanazio
 
12 programando em python - modulos
Victor Marcelino
 
Programando para web com python - Introdução a Python
Alvaro Oliveira
 
Workshop Python.2
Marcelo Lira
 
Programando em Python - Funções
IFRN -campus Ipanguaçu
 
aula5_python.pdf
NonatoColaresColares2
 
Curso Java Básico - Aula 04
Natanael Fonseca
 
Curso de Python (Básico) - Português
Helio Colombe
 
Linguagem de Programação Python
Junior Sobrenome
 
Aula5
softeam
 
Qualidade no desenvolvimento de software com PHPUnit
Diego Tremper
 
Introdução à linguagem python
Luiz Vieira .´. CISSP, OSCE, GXPN, CEH
 
Gerenciamento de Pacotes no Linux
Elexsandro Rangel
 
07 programando em python - funcoes
Victor Marcelino
 
Técnicas para preparação e desenvolvimento de sites em django
Mario Chaves
 
Computação Científica com SciPy - Brevíssimo Tutorial
Fabio Spanhol
 
Python, a arma secreta do Google
Luciano Ramalho
 
Programacao de Computadores e Robocode PDF
Luciano Seibel
 
Java
bielgott
 
Curso Java Basico
Jamildo Feitosa
 
PL/Python: Programando em Python no PostgreSQL
Juliano Atanazio
 
Anúncio

Mais de samuelthiago (20)

PPTX
Eclipse i (1)
samuelthiago
 
PPTX
Html básico
samuelthiago
 
PPTX
Interface grafica em_java_parte_v
samuelthiago
 
PPTX
Interface grafica em_java_parte_iv
samuelthiago
 
PPTX
Interface grafica em_java_parte_iii
samuelthiago
 
PPTX
Interface grafica em_java_parte_ii
samuelthiago
 
PPTX
Interface grafica em_java_parte_i
samuelthiago
 
PPTX
Poo interacao entre_objetos_blue_j_ii
samuelthiago
 
PPTX
Introducao a poo_com_blue_j
samuelthiago
 
PPT
Projeto calculadora em_java
samuelthiago
 
PPT
Introducao a poo_com_blue_j
samuelthiago
 
PDF
01 02 introdução aos bancos de dados (slides)
samuelthiago
 
PDF
Java 08
samuelthiago
 
PDF
Java 07
samuelthiago
 
PDF
Java 06
samuelthiago
 
PDF
Java 05
samuelthiago
 
PDF
Java 04
samuelthiago
 
PDF
Java 03
samuelthiago
 
PDF
Java 02
samuelthiago
 
PDF
Java 01
samuelthiago
 
Eclipse i (1)
samuelthiago
 
Html básico
samuelthiago
 
Interface grafica em_java_parte_v
samuelthiago
 
Interface grafica em_java_parte_iv
samuelthiago
 
Interface grafica em_java_parte_iii
samuelthiago
 
Interface grafica em_java_parte_ii
samuelthiago
 
Interface grafica em_java_parte_i
samuelthiago
 
Poo interacao entre_objetos_blue_j_ii
samuelthiago
 
Introducao a poo_com_blue_j
samuelthiago
 
Projeto calculadora em_java
samuelthiago
 
Introducao a poo_com_blue_j
samuelthiago
 
01 02 introdução aos bancos de dados (slides)
samuelthiago
 
Java 08
samuelthiago
 
Java 07
samuelthiago
 
Java 06
samuelthiago
 
Java 05
samuelthiago
 
Java 04
samuelthiago
 
Java 03
samuelthiago
 
Java 02
samuelthiago
 
Java 01
samuelthiago
 

Último (6)

PPTX
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
DOCX
150 PMBOK 7 Scenario-Based PMP Exam Questions and Answers.docx
Marcelo Cruz
 
PDF
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
PPTX
5 Critérios para seleção do objeto de estudo.pptx
Eduardo Corrêa
 
PDF
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
PDF
Estudos DAC - projeto de arquitetura futurista
ra189223
 
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
150 PMBOK 7 Scenario-Based PMP Exam Questions and Answers.docx
Marcelo Cruz
 
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
5 Critérios para seleção do objeto de estudo.pptx
Eduardo Corrêa
 
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
Estudos DAC - projeto de arquitetura futurista
ra189223
 

Programando em python modulos

  • 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