Python

Python é uma linguagem de programação orientada a objetos lançada em 1991. Prioriza a legibilidade do código sobre a velocidade ou expressividade, combinando uma sintaxe concisa e clara com os recursos poderosos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por terceiros. O nome Python teve a sua origem no grupo humorístico britânico Monty Python.

python

Para a separação de blocos de código, a linguagem usa espaços em branco e indentação ao invés de delimitadores visuais como chaves ou palavras. Ou seja, a indentação é obrigatória: o aumento da indentação indica o início de um novo bloco, que termina da diminuição da indentação. Um bloco inicia quando uma linha é indentada em 4 espaços – um bloco dentro de outro bloco, possui mais 4 espaços a frente, e assim por diante.

Utilizando o interpretador interativo não é necessário a criação do arquivo de Python compilado, os comandos são executados interativamente. Porém quando um programa ou um módulo é evocado, o interpretador realiza a análise léxica e sintática, compila o código de alto nível se necessário e o executa na máquina virtual da linguagem. O interpretador Python é um programa dinâmico que passa continuamente por mudanças e desenvolvimento, portanto o script pode rodar em uma versão mas não em outra – veja a versão instalado no seu PC através do comando “python -V” no bash.

No Python, a tipagem dos dados e objetos é dinâmica, ou seja, ao uma nova variável, ou um parâmetro de uma função, não é preciso informar qual é o seu tipo, nem mesmo defini-la antes de usá-la. Internamente todo valor é baseado em algum tipo de dado, que por sua vez é uma classe. Uma vez que um valor é atribuído a uma variável, ela passa a se comportar da forma que a classe daquele valor foi definida para se comportar.

Instalação

Sua instalação pode ser via apt-get:

Para instalar os módulos, utilize “sudo apt-get install python-MÓDULO” se tiver no repositório do Debian/Ubuntu – aparece o erro “ImportError: No module named …” quando não tem o módulo. Observação: para instalar módulo para o python versão 2.xx, basta escrever “python”, mas se for usar outra versão (3, 3.4, etc), deve-se colocar seu respectivo número após o nome do binário (python3, python3.4, etc) – o mesmo vale quando for executar um script python ou chamar o terminal.

Uma alternativa para instalar módulos é usar o comando pip, que busca os pacotes no repositório PyPI da Python Software Foundation. Essa opção abrange um número maior de módulos e permite escolher a versão. Além disso, ela é compilada no seu computador (os repositórios Linux usando versões pré-copmpiladas). Primeiro, instale o pip através dos seguintes comandos:

Depois, basta instalar o módulo usando “sudo pip install MÓDULO” (ou pip3).

Anaconda

O Anaconda (paródia com o nome de outra cobra, a python) é uma iniciativa que tem como objetivo agregar as principais ferramentas para análise de dados. Para utilizá-lo, baixe seu único arquivo contendo um novo python e todas as bibliotecas, que serão instaladas na home do próprio usuário (sem interferir na instalação principal).

O arquivo instalador pode ser baixado do site do Anaconda https://www.anaconda.com/download , escolhendo sistema operacional, versão do python e arquitetura. Depois, torne-o executável (chmod +x nome_do_arquivo.sh) e ir seguindo os passos. Para finalizar, abra uma nova sessão ou atualize seu terminal com o comando “source ~/.bashrc”. Ao abrir um terminal python, deve aparecer uma linha contendo o texto “Anaconda…”.

Os comandos no terminal Linux a seguir servem para atualizar sua base e todos os pacotes:

Para adicionar um canal extra para instalar outros pacotes, use os seguintes comandos:

Esse exemplo instala o pacote “geocoder” – veja mais sobre ele no post sobre Como obter cidade usando latitude e longitude.

Utilização

Para usar o modo interativo (console), digite “python” e vai aparecer o prompt de comando como “>>>”. Para sair, use “exit()”.

Os arquivos de código-fonte são identificados por “.py” e executados como “python nome_script.py”. Comentários começam com # e são terminados pela quebra da linha.

Sentenças não são funções (observe que não possuem parênteses em seguida); if, while e break são exemplos de sentenças de controle de fluxo, pois elas estabelecem quais instruções são executadas – a linha que as contém sempre termina com dois pontos “:”. Enquanto o Python possui muitas funções, algumas delas existem em programas separados, chamados módulos. Nas primeiras linhas de código, deve começar importando os módulos. Para utilizá-los, escreva “import nome_do_módulo”. Esta é uma sentença de importação. Veja um exemplo:

Nesse caso, para trabalhar com datas, é preciso importar um pacote chamado “date”, de dentro de outro pacote, chamado “datetime”. A função “today()” retorna a data do dia no formato “datetime.date” (o que pode ser visto na linha seguinte).

Alguns exemplos de funções: print() mostra um texto na tela; input() armazena um texto dado como entrada, pelo teclado; os.system() executa um comando shell; sys.exit(“Error message”) pára a execução e imprime mensagem (precisa do módulo sys). Para receber argumentos através da linha de comando, utilize a seguinte sintaxe (como é recebido uma lista, o segundo par de colchetes serve para selecionar o primeiro elemento):

O sys.argv[0] é o nome do próprio arquivo.

Manipulação de arquivos

Para manipular arquivos em Python, utiliza-se a função open com a seguinte sintaxe: variavel = open(“file”, “modo”). O modo pode ser leitura “r” (read) ou escrita “w” (write). Caso não exista o arquivo, ele é criado. “var_file” é um objeto, que pode ser acessado pelos seguintes métodos:

  • read(): retorna uma string única com todo o conteúdo do arquivo;
  • readline(): retorna a próxima linha do arquivo, e incrementa a posição atual;
  • readlines(): retorna todo o conteúdo do arquivo em uma lista, uma linha do arquivo por elemento da lista;
  • write(data): escreve a string data para o arquivo, na posição atual ou ao final do arquivo, dependendo do modo de abertura – esta função falha se o arquivo foi aberto com modo “r”;
  • seek(n): muda a posição atual do arquivo para o valor indicado em n;
  • close(): fecha o arquivo – sempre utilizado no final da manipulação do arquivo.

Veja esses dois exemplos para ler/escrever um arquivo de texto de múltiplas linhas:

Obs: se for imprimir um número, utilize “str(número)” para convertê-lo em texto.

Banco de dados

Os métodos, que também são definidos para programação orientada a objetos, são funções dentro de uma classe. Um exemplo de objeto, responsável por enviar comandos ao banco de dados, é o “cursor”. Dentre as operações desse objeto está o execute (executa comando no banco de dados) e fetchall (retorna todos os valores produzidos pelo comando executado).

Ao utilizar a operação “fetchall”, será retornada uma tupla (ou “tuple”), que é como uma lista, só que imutável (ou seja, não dá para aplicar um “sort”, por exemplo) – veja mais no post sobre Orientação a objeto no python e IDL. Ela é escrita entre parênteses e pode receber dados de datetime, string e inteiro conjuntamente, por exemplo:

Para identificar um elemento nela, deve-se usar duas vezes a identificação de posição. Nesse exemplo, o comando “str(temp[0][1])” escolhe a posição 0 dentro da tupla (que só tem uma posição mesmo) e posição 1 com o elemento “datetime” (o comando “str()” é opcional, serve para imprimir a datetime no formato “2015-02-06”).

Exemplo

Esse script importa alguns módulos necessário, define duas funções e um vetor, monta uma string com data e, dentro de um laço, varre todas as opções de locais para o ano e mês definido. Também faz uma verificação se o conteúdo é o suficiente para ser considerado válido e imprime a saída (que pode ser direcionada para um arquivo ao executar o script via linha de comando, por exemplo “python get_obs.py >> obs.csv”). A linha “coding” logo no início indica que o script usa a codificação informada (necessária para digitar acentos e caracteres especiais, por exemplo).

Observação: O uso de “reload(sys)” e “sys.setdefaultencoding()” sempre foi desencorajado. Para usar codificação UTF-8, utilizar conforme consta no início do script de exemplo (“# -*- coding: utf-8 -*-” seguido de “from __future__ import unicode_literals”). No caso de vetores cujos elementos apareçam com uma letra u e um apóstrofe na frente quando imprimir, como u'[‘conteúdo’], acrescente “.encode(‘utf-8’)” depois da variável a ser utilizada – por exemplo: tmax = obj[‘tmax’].encode(‘utf-8’)

Fontes