Quando entramos no mundo do desenvolvimento de softwares optamos por uma ou algumas linguagens de programação, seja pela influência de outros programadores ou pelo simples fato de gostar de algum detalhe de uma linguagem específica.

Mas o que difere um linguagem da outra é o que ela pode lhe oferecer para obter ganhos de desempenho, agilidade no desenvolvimento, manutenção de código fonte e outros requisitos que contam na hora de construir sua aplicação, pois sabemos que os clientes sejam eles internos ou externos não querem saber do processo de construção, mas querem que o produto adquirido funcione bem e sem erros.

Quero deixar bem claro que minha posição no mundo da programação não referência ou menospreza qualquer linguagem de software, tenho comigo que cada situação necessita de uma ferramenta especifica onde cada monstro do nosso dia-a-dia precisa de uma arma certa para mata-lo. “Um verdadeiro profissional não só conhece o terreno onde pisa, mas é especialista no chão em que andas …”.

Python é uma linguagem excepcional, construída a fim de melhorar a legibilidade do desenvolvimento a linguagem possui tipagem dinâmica e forte, interpretada, imperativa e orientada a objetos.

Existem diversos frameworks disponíveis para python com o Django por exemplo, outro fator é que existe um infinidade de bibliotecas e módulos prontos para serem utilizados em qualquer desenvolvimento de aplicações seja ela para WEB, aplicações desktop ou Servidores.

Por experiência própria posso dizer que com Python, desenvolvendo para servidores web e desktop, me ajuda a matar os monstros e solucionar os problemas do dia-a-dia.

Debugs e Testes Funcionais

O IDLE shell executa o python em modo terminal ou linha de comando, onde você pode testar seu código fonte para afirmação ou correção de problemas. Você pode chama-lo também bastando digitar “python” em qualquer terminal.

IDES de Desenvolvimento

As IDE(s) nos auxiliam a ter produção e melhor visualização do que estamos construindo, além de fornecer recursos extras como compilação, gerenciamento de plugins,configurações que um simples editor com Highlights não irá fornecer.

Abaixo segue um lista de algumas IDE(s) que irá auxiliar em seu desenvolvimento:

IDLE – “Integrated Development Environment” (Ambiente de desenvolvimento integrado) para Python. IDLE é escrito usando o Tkinter e consequentemente bem independente de plataforma.

Netbeans – Com a instalação do plugin para python ou jython você pode criar projetos ler e alterar arquivos e debuga-lo com todos os recursos que o Netbeans oferece.

Eclipse (Pydev) – É um plugin para desenvolvimento Python no Eclipse.

IPython – IPython pode ser usado como substituto para a shell standard Python, ou pode ser usado como um ambiente de trabalho completo para computação científica (como o Matlab ou o Mathematica) quando pareado com as ferramentas científica e numérica Python padrão.

PyPE – Não é bem uma IDE, Pype (Python Programmers Editor) é leve e um poderoso editor.

E muitos outros editors como Vim, joe, gedit, kedit …

Dicas para Desenvolvedores

Para transformar a sua aplicação em executavel, você pode efetuar duas ações. Uma delas é digitar o seguinte comando:


python [opções] [nome-do-arquivo.py] [parametros opcionais]


python alo-mamae.py "argumento1" 10 "5.3"

ou como no shellscript declarar no início do arquivo a seguinte linha:

#!/usr/bin/env python

ou


#!/usr/bin/python2.6

Não se esqueça de aplicar permissão de execução no arquivo python:


chmod +x nome-do-arquivo-python.py

Outra declaração muito importante é a codificação de caracteres principalmente se for fazer a manipulação de dados.


#!/usr/bin/env python
# -*- coding: utf-8 -*-
if(1 == 1):
print("Hello World !!!")
else:
print("um não é zero !!! rssss")

Compilando para ByteCodes

O resultado abaixo será a geração de um arquivo com a extensão *.pyo, um arquivo bytecode:


python -O -m nome-do-arquivo-python.py

ou


python -OO -c "import nome-do-arquivo-python"

Para mais detalhes digite “python –help” no terminal para exibir outras opções.

Multiplataforma

O código produzido na linguagem de programação Python será interpretado e transformado em bytecodes ou seja uma pré compilação na verdade, o que o transforma em multiplataforma podendo executar independente da arquitetura do sistema operacional. Esta caracteristica de python o torna mais atraente para os desenvolvedores, pois você não precisará ser recompilado para outro sistema.

Vai reparar que ao executar sua aplicação, será gerado um ou mais arquivos com a extenção (*.pyc), cujo qual são os arquivos de bytecodes de python.

Palavras Chave do Python


and
as
assert
break
class
continue
def
del
elif
else
except
False
finally
for
from
global
if
import
in
is
lambda
None
nonlocal
not
or
pass
raise
return
True
try
while
with
yield

Exemplos Diversos


#!/usr/bin/env python
# -*- coding: utf-8 -*-
x = input("Digite um número inteiro: ")

try:
y = int(x)
print("Número inteiro: ", y)
Except ValueError as err:
print(err)


#!/usr/bin/env python
# -*- coding: utf-8 -*-
def ReturnString():
return "Olá eu sou uma função!"

print(ReturnString())


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random

print(random.randint(1, 10))
print(random.choice(["amarelo", "azul", "verde", "branco", "preto", "rosa", "vermelho"]))


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import re
import urllib2
import tarfile
import shutil

# Carrega os pacotes do arquivo especificado pelo parametro filename.
# retornando um array de dados.
def load_file_packages(filename):
pkg = []

if(filename and os.path.exists(filename)):
fd_pkg = open(filename, "r")

for line in fd_pkg:
line = re.sub("[#].*?[\n|\n\r]", "", line)

if(re.match("[a-z|A-Z|0-9|\-|\_|\.|\+]", line)):
pkg.append(line)

return pkg


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import re
import urllib2
import tarfile
import shutil

# Efetua a cópia dos arquivos para o destino
def copy_files(origin, dest):
if(os.path.isdir(origin)):

if(os.path.isdir(dest)):
shutil.rmtree(dest)

print("\nCopiando arquivos do thema: virtual-server-theme ...\n\n")

shutil.copytree(origin, dest)

copy_files("/home/user/Documentos", "/home/user/backup")


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import re
import urllib2
import tarfile
import shutil

# Efetua o download dos arquivos necessários para instalação.
def download_managed_services():
# Abre a página para verificação dos links necessários para efetuar download dos arquivos
# de instalação do wenmin, virtualmin e thema
request1 = urllib2.Request("http://www.webmin.com/download.html")
request2 = urllib2.Request("http://www.webmin.com/vdownload.html")

fd1 = urllib2.urlopen(request1)
fd2 = urllib2.urlopen(request2)

# Read the results back.
s1 = fd1.read()
s2 = fd2.read()

link_webmin = re.search("(http\:\/\/prdownloads\.sourceforge\.net\/webadmin\/webmin).*?(all.deb)", s1)
link_virtualmin = re.search("(http\:\/\/download\.webmin\.com\/download\/virtualmin\/virtual\-server).*?(wbm.gz)", s2)
link_virtualmin_themes = re.search("(http\:\/\/download\.webmin\.com\/download\/virtualmin\/virtual-server-theme).*?(wbt.gz)", s2)

# Encerra o descritor de arquivo fd1, fd2
fd1.close()
fd2.close()

# Verifica a existencia do arquivo webmin para download
if(not link_webmin.group(0)):
print("Arquivo Webmin: não encontrado para download")
else:
print("Arquivo Webmin: " + link_webmin.group(0) + "[ encontrado ]\n");
print("Efetuando Download: " + link_webmin.group(0) + "... \n");

#------------------------------------------------------------------------------------------
# Futura implementação com barra de progresso.
#
#print("Efetuando Download: " + link_virtualmin_themes.group(0) + " | Aguarde ...");
#request_virtualmin_themes = urllib2.Request(link_virtualmin_themes.group(0))
#download_virtualmin_themes = urllib2.urlopen(request_virtualmin_themes)
#local_file = open("downloads/virtualmin-themes.wbt.gz", "w")
#local_file.write(download_virtualmin_themes.read())
#local_file.close()
#------------------------------------------------------------------------------------------

if(not os.path.exists("downloads/" + os.path.basename(link_webmin.group(0)))):
os.system("wget -P downloads " + link_webmin.group(0))

if(os.path.exists("downloads/" + os.path.basename(link_webmin.group(0)))):
os.chmod("downloads/" + os.path.basename(link_webmin.group(0)), 0777)
print(" [ ok ]\n")

# Verifica a existencia do arquivo virtualmin para download
if(not link_webmin.group(0)):
print("Arquivo Vitualmin: não encontrado para download")
else:
print("Arquivo Vitrualmin: " + link_virtualmin.group(0) + "[ ok ]")
print("Efetuando Download: " + link_virtualmin.group(0) + "... \n");

if(not os.path.exists("downloads/" + os.path.basename(link_virtualmin.group(0)))):
os.system("wget -P downloads " + link_virtualmin.group(0))

if(os.path.exists("downloads/" + os.path.basename(link_virtualmin.group(0)))):
os.chmod("downloads/" + os.path.basename(link_virtualmin.group(0)), 0777)
print(" [ ok ]\n")

# Verifica a existencia do arquivo de thema do virtualmin para download
if(not link_webmin.group(0)):
print("Arquivo Themes Vitualmin: não encontrado para download")
else:
print("Arquivo Themes Virtualmin: " + link_virtualmin_themes.group(0) + "[ OK ]");
print("Efetuando Download: " + link_virtualmin_themes.group(0) + "... \n");

if(not os.path.exists("downloads/" + os.path.basename(link_virtualmin_themes.group(0)))):
os.system("wget -P downloads " + link_virtualmin_themes.group(0))

if(os.path.exists("downloads/" + os.path.basename(link_virtualmin_themes.group(0)))):
os.chmod("downloads/" + os.path.basename(link_virtualmin_themes.group(0)), 0777)
print(" [ ok ]\n")

return [
os.path.basename(link_webmin.group(0)),
os.path.basename(link_virtualmin.group(0)),
os.path.basename(link_virtualmin_themes.group(0))
]