Módulos e Obtendo Ajuda

Módulos

Um módulo é um arquivo contendo definições e comandos em Python para serem usados em outros programas em Python. Há diversos módulos do Python que fazem parte da biblioteca padrão. Nós já utilizamos um deles intensamente, o módulo turtle. Lembre-se que uma vez que o módulo é importado, podemos utilizar as coisas que estão definidas dentro dele.

Estamos usando aqui Screen e Turtle, ambos definidos dentro do módulo turtle.

Mas e se ninguém tivesse nos avisado sobre o módulo turtle? Como ficaríamos sabendo da sua existência? Como saberíamos o que ele pode fazer para a gente? A resposta é pedir ajuda e o melhor jeito para isso é consultando a documentação do Python.

A documentação para a versão 3 do Python está disponível (em inglês) no sítio http://docs.python.org/py3k/ (a página é mostrada abaixo). Essa é uma referência muito útil sobre todos os aspectos do Python. Esse sítio contém uma listagem de todos os módulos padrões disponíveis no Python (veja Global Module Index). Observe também que existe um manual de referência à linguagem (Language Reference) e um tutorial (Tutorial), bem como instruções para instalação, dicas de como fazer, e respostas a perguntas frequentes. Recomendamos que você tente se familiarizar com essas informações e se acostume a utilizá-las com frequência.

../_images/pythondocmedium.png

Se você ainda não o fez, dê uma olhada na lista de módulos (Global Module Index). Nessa lista você vai encontrar, em ordem alfabética, todos os módulos disponíveis na biblioteca padrão. Procure pelo módulo turtle.

../_images/moduleindexmedium.png ../_images/turtlemodmedium.png

Observe que todas as funcionalidades de uma tartaruga (turtle) que já falamos anteriormente estão descritas. No entanto, há muitas outras. Aproveite para ler e conhecer melhor essas outras funcionalidades que as tartarugas podem fazer.

Nota: Módulos do Python e limitações do activecode

Em todos os capítulos desse livro, as janelas do activecode permitem que você pratique as partes do Python que você está aprendendo. Nós mencionamos no primeiro capítulo que a atividade de programação é normalmente realizada dentro de um ambiente de desenvolvimento e que o activecode utilizado aqui serve apenas para nos ajudar a aprender. Essa não é a maneira de desenvolver programas reais. Por isso é necessário mencionar que muitos dos módulos da biblioteca padrão do Python não funcionarão no ambiente do activecode. De fato, apenas os módulos turtle, math e random estão funcionando no momento. Se você deseja explorar algum outro módulo, você precisa utilizar um ambiente de desenvolvimento mais poderoso.

Teste seu entendimento

Mais sobre o uso de módulos

Antes de prosseguir com a exploração dos outros módulos, nós vamos falar um pouco mais sobre o que são módulos e como são tipicamente usados. Uma das coisas mais importantes a saber sobre módulos é o fato de que eles são objetos de dados, assim como qualquer outro tipo de dado em Python. Objetos do tipo module simplesmente contém outros elementos do Python.

A primeira coisa que precisamos fazer quando queremos usar um módulo é fazer um import. No exemplo acima, a instrução import turtle cria um novo nome, turtle, que faz referência a um objeto module. Isso se parece muito com os diagramas de referência que vimos anteriormente para as variáveis simples.

../_images/modreference.png

A fim de utilizar algo contido em um módulo, usamos a notação de ponto, fornecendo o nome de módulo e o item específico unidos por um “ponto”. Por exemplo, para usar a classe Turtle, escrevemos turtle.Turtle. Você deve ler isso como: “No módulo turtle, acesse o elemento Python chamado Turtle”.

Agora vamos mostrar alguns outros módulos que você pode achar útil.

O módulo math

O módulo math contém funções matemáticas que você costuma encontrar em calculadoras e algumas constantes matemáticas como pi e e. Como vimos acima, ao importar o módulo math, obtemos uma referência para um objeto module que contém esses elementos.

../_images/mathmod.png

Mostramos a seguir como usar alguns itens do módulo math. Se você quiser saber mais detalhes, dê uma olhada na documentação do módulo em Math Module.

Observe outra diferença entre este módulo e nosso uso de turtle. Em turtle criamos objetos (tanto Turtle quanto Screen) e chamamos métodos desses objetos. Lembre-se que um turtle é um objeto de dados (lembre-se do alex e da tess). Precisamos criar um objeto antes de usá-lo. Quando dizemos alex = turtle.Turtle(), estamos chamando o construtor da classe Turtle que retorna um objeto turtle.

Funções matemáticas não precisam ser construídas. Elas simplesmente executam uma tarefa. Elas ficam todas alojadas no módulo chamado math. Uma vez que o módulo math tenha sido importado, qualquer coisa definida lá pode ser usada no nosso programa. Observe que usamos sempre o nome do módulo seguido de um ponto seguido pelo item específico do módulo (math.sqrt). Você pode pensar nisso como sobrenome.nome onde o sobrenome é o módulo (família) e o nome indica o item individual no módulo.

Se você não tiver feito isso ainda, dê uma olhada na documentação do módulo math.

Teste seu entendimento

O módulo random

Muitas vezes queremos usar números aleatórios em programas. Aqui estão alguns usos típicos:

  • Para jogar um jogo de azar em que o computador precisa jogar alguns dados, escolher um número, ou jogar uma moeda,

  • Para embaralhar um baralho de cartas aleatoriamente,

  • Para permitir que uma nova nave inimiga apareça aleatoriamente e atire em você,

  • Para simular a precipitação de chuva em um modelo computacional para estimar o impacto ambiental da construção de uma barragem,

  • Para criptografar sua sessão bancária na Internet.

O Python fornece um módulo random que ajuda com tarefas como esta. Você pode dar uma olhada na documentação. Aqui estão as principais coisas que podemos fazer com esse módulo.

Pressione o botão Run algumas vezes. Note que os valores se modificam a cada vez. Esses números são aleatórios.

A função randrange gera um inteiro no intervalo definido pelo menor e maior argumento, usando a mesma semântica do range — ou seja, o valor inicial é incluído mas o final é excluído. Todos os valores tem a mesma probabilidade de ocorrência (ou seja, os resultados são uniformemente distribuídos).

A função random() retorna um número em ponto flutuante no intervalo [0.0, 1.0) – o colchete significa “intervalo fechado à esquerda” e o parênteses significa “intervalo aberto à direita”. Em outras palavras, 0.0 é possível, mas todos os números retornados serão estritamente menores que 1.0. É comum escalar os resultados após chamar esse método para transformá-los para dentro de um intervalo apropriado para a sua aplicação.

Nesse caso, nós convertemos o resultado da chamada do método em um número no intervalo [0.0, 5.0). Novamente, esses números são uniformemente distribuídos — números perto do 0 são tão prováveis de aparecer quanto o 0.5, ou números perto de 1.0. Se você continuar a pressionar o botão Run, você verá valores aleatórios de 0.0 até o limite de, mas sem incluir o valor, 5.0.

É importante notar que geradores de números aleatórios são baseados em um algoritmo determinístico — reproduzível e previsível. Por isso eles são chamados de geradores pseudo-aleatórios — pois eles não são verdadeiramente aleatórios. Eles começam com um valor de semente. Cada vez que você pedir um outro número aleatório, você vai receber um com base no valor atual da semente, e o estado da semente (que é um dos atributos do gerador) é atualizado. A boa notícia é que cada vez que você executar o seu programa, o valor da semente é provavelmente diferente, significando que apesar dos números aleatórios estarem sendo criados usando algoritmos determinísticos, você vai obter um comportamento aleatório cada vez que você executar.

Lab

  • Sine Wave Nesse exercício dirigido de laboratório você vai fazer a tartaruga desenhar uma onda senoidal.

Teste seu entendimento

Glossário

biblioteca padrão

Uma coleção de módulos que faz parte de uma instalação padrão do Python.

determinístico

Um processo que é reproduzível e previsível.

documentação

Um lugar onde você pode pegar informação detalhada sobre aspectos da linguagem de programação.

gerador de números aleatórios

Uma função que te fornece números aleatórios, geralmente entre 0.0 e 1.0.

módulo

Um arquivo contendo definições e comandos em Python para serem usados em outros programas em Python. Os conteúdos de um módulo são disponibilizados para outro programa pelo uso do comando import.

número aleatório

Um número que é gerado de forma a exibir aleatoriedade estatística.

número pseudo-aleatório

Um número que não é genuinamente aleatório mas criado a partir de um algoritmo.

Exercícios

You have attempted of activities on this page