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.
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:
$ sudo apt-get install python
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:
# Python -V < 3 sudo apt-get install python-pip # Python -V >= 3 sudo apt-get install python3-pip # Para versões mais antigas de Linux # Python -V < 3 sudo apt-get install python-setuptools sudo easy_install pip # Python -V >= 3 sudo apt-get install python3-setuptools sudo easy_install3 pip
Depois, basta instalar o módulo usando “sudo pip install MÓDULO” (ou pip3). Se der algum erro do tipo “Command “python setup.py egg_info” failed with error code 1 in…”, atualize o “setuptools” através do comando “pip install –upgrade setuptools” (ou pip3).
Existem outras opções de instalação do python, como através do anaconda/miniconda e com ambientes virtuais – veja mais no post Conda e ambientes virtuais.
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. É comum incluir a linha “coding” logo no início do script, indicando que ele usa a codificação informada (necessária para digitar acentos e caracteres especiais, por exemplo). O uso de “reload(sys)” e “sys.setdefaultencoding()” sempre foi desencorajado. Para usar codificação UTF-8, comece o script com a linha “# -*- coding: utf-8 -*-“. 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’).
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:
>>> from datetime import date >>> hoje = date.today() >>> hoje datetime.date(2008, 11, 24) >>> hoje.__class__ <type 'datetime.date'>
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):
data = sys.argv[1:][0]
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:
texto = '''1a linha 2a linha 3a linha ''' # Leitura with open('arquivo.txt', 'r') as f: for linha in f.readlines(): print(linha) # Outra forma de leitura with open('arquivo.txt', 'r') as f: conteudo = f.read().splitlines() print(conteudo) # Escrita with open('arquivo.txt', 'w') as f: f.write(texto) # Outra forma de escrita f = open ('arquivo.txt', 'w') f.write(texto) f.close()
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:
import psycopg2 from datetime import datetime conn = psycopg2.connect(host = "HOST", database = "DBNAME", user="USER") cursor = conn.cursor() query = "SELECT * FROM schema.table WHERE id = '1';" cursor.execute(query) temp = cursor.fetchall() # print temp retorna: [(1, datetime.date(2015, 2, 6), datetime.date(2015, 7, 1), 90.9189)] >> print str(temp[0][1]) # retorna: 2015-02-06
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”).
Python no Windows
Baixe o instalador disponível no site do Python. Ao executar o arquivo, marque a opção “Add Python to PATH” para simplesmente rodar usando o comando “python nome_do_script.py” diretamente no terminal do Windows (comando “cmd”) -caso contrário, você deve escrever o caminho completo do seu interpretador python (“C:\ProgramData\Anaconda2\python.exe” App.py, por exemplo), seguido de espaço e o nome do script. Você também pode incluir o caminho das variáveis de ambiente depois – veja como fazer isso se tiver permissões de administrador e se não tiver nos respectivos links. No segundo caso, basicamente você deve criar uma nova variável chamada “Path” no seu usuário cujo conteúdo seja o caminho para onde está o executável. Depois, basta digitar “python” para entrar no terminal ou “python nome_script.py” para executar o script.
O Anaconda também está disponível para Windows. O mais indicado é não definir as variáveis de ambiente, e sim usar diretamente o “Anaconda prompt” para executar os scripts python.
Você também pode usar uma IDE (Ambiente de desenvolvimento integrado, em inglês), como o spyder, o PyCharm ou o Aton. Um equivalente ao “exit()” para travar o código em um ponto é usar os comandos “sys.tracebacklimit = 0” e “raise ValueError()” seguidos.
Código compilado
Quando você executa um script Python, o interpretador compila o código em bytecode e o salva em um arquivo .pyc, geralmente dentro de uma pasta __pycache__ (no Python 3) ou no mesmo diretório do script (no Python 2). Isso evita a necessidade de recompilar o código toda vez que ele é executado, acelerando o processo.
Um arquivo .pyc (Python Compiled) é um “bytecode compilado” gerado automaticamente pelo interpretador Python ao executar um script .py. Ele contém uma versão intermediária do código, que é mais eficiente para execução, mas não é diretamente legível por humanos.
O uncompyle6 é uma ferramenta que permite converter um arquivo .pyc de volta para um código Python legível. Ele pode ser instalado através de “pip install uncompyle6”. Antes de descompilar, é importante saber a versão do Python que gerou o .pyc. Você pode descobrir isso com o comando “file arquivo.pyc”. Para descompilas o arquivo, execute “uncompyle6 arquivo.pyc > arquivo.py”.
Fontes
- Aprendendo Django – Um pouco de python agora
- Roberto’s Blog: Python – Brincando com arquivos
- Curso gratuito de python do IME/USP
6 comments