No encontro que tivemos no
Utils.runNerdTalks(10), falamos sobre
Python.
É difícil falar de uma linguagem, porque tem muita coisa a se falar.
O que posso dizer, é que é a linguagem que mais estou usando ultimamente, e a cada dia descubro coisas novas, e interessantes.
Python
O Python é uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos, de tipagem dinâmica e forte. O código é aberto, e multiplataforma.
Ela foi criada por Guido van Rossum, que não por acaso trabalha hoje na Google (uma das empresas mais conhecidas que utilizam Python).
Apesar do nome estar associado ao réptil píton, a linguagem veio em homenagem ao grupo humorístico britânico Monty Python.
Always Look on the Bright Side of Life
1) Instalação
O Python já vem instalado em vários sistemas operacionais como Linux e Mac. Caso não tenha instalado na máquina acesse
aqui.
Hoje ele está na versão 3, mas utilizamos a versão 2.7 para exemplificar. A versão 3 tem quebra de compatibilidade com a versão 2.7
Para verificar a versão do Python na máquina digite:
python --version
2) Começando a brincar
Para abrir um shell interativo, digite
python
Abrirá algo como:
Dentro dele, pode-se digite:
x = 1
y = 1
resultado = x + y
print resultado
Note que diferentemente de Java, nós não atribuimos o tipo para as variáveis. Assim sendo posso também fazer:
x = "Alexandre "
y = "Uehara"
resultado = x + y
print resultado
Isso é o começo para brincarmos com o Python (em um shell interativo). Aliás caso queiram, pode instalar também o
iPython (o qual recomendo bastante).
3) Bibliotecas
Para instalar o iPython e outras bibliotecas, recomendo instalar pelo
easy_install ou
pip. Eles são gerenciadores de bibliotecas (tal como apt-get e RubyGems).
Lembrando que em Python muitas bibliotecas já vem como padrão, não precisando instalar bibliotecas de terceiros.
Exemplo:
Caso eu queira instalar o virtualenv, digite:
sudo easy_install virtualenv
ou
sudo pip install virtualenv
Aliás o
virtualenv, é uma ferramenta para termos várias versões de python em sua máquina. Semelhante ao
RVM em Ruby.
4) Escrevendo um programa
4.1) Hello World
Para escrever um Hello World, crie um arquivo, helloworld.py
Dentro dele escreva:
print Hello World
Só isso? Sim, só isso. Depois disso, digite no terminal:
python helloworld.py
4.2) Hello World executável
Dentro do mesmo arquivo adicione na primeira linha:
#!/usr/bin/python
Depois dê permissão de executável ao arquivo:
chmod ugoa+x helloworld.py
E, execute:
./helloworld.py
Simples!!!
4.3) Blocos == Identação
O que torna o Python simples de ler, entender e dar manutenção é que não existe blocos com chaves "{" e "}" como no Java. Os blocos são as próprias identações.
Exemplo: crie um programa chamado:
- nome.py
#!/usr/bin/python
if nome == "Alexandre":
print nome
else:
print "outro nome"
Veja que colocamos 2 espaços depois do if, e depois do else. Dê novamente a permissão de executável ao arquivo, e execute.
4.4) Classes
Apesar da linguagem ser orientada a objetos como vocês puderam ver anteriormente, não precisamos utilizá-lo dessa maneira.
Mas o legal, é realmente usá-lo como OO. Para criar uma classe:
class Empregado()
def __init__(self, nome):
self.nome = nome
def printNome(self, mensagem="Meu nome é: "):
print mensagem + self.nome
Mas o que é esses montes de "self". É... realmente não é elegante, mas é como se fossem os vários "this" do Java.
E o "__init__"?? É o construtor da classe.
E o "mensagem=" no método "printNome". O "mensangem=" é o argumento do método, mas com um valor default. Isso é para faciliar a sobrecarga de métodos. Lembrando que não é necessário colocar um valor default para ele..
É possível também passar ao método os argumentos em qualquer ordem, passando o nome do argumento:
#!/usr/bin/python
# -*- coding: utf8 -*-
class Empregado():
def __init__(self, nome):
self.nome = nome
def printNome(self, mensagem="Meu nome é: ", mensagemfinal="."):
print mensagem + self.nome + mensagemfinal
def main():
empregado = Empregado("Alexandre")
empregado.printNome(mensagemfinal="!!!")
if __name__ == "__main__":
main()
Veja que adicionamos na 2a. linha o encoding.
E para iniciar o programa, colocamos o main.
4.5) Bibliotecas
Para chamar uma biblioteca é só chamar o import:
#!/usr/bin/python
# -*- coding: utf8 -*-
import unittest
ou
#!/usr/bin/python
# -*- coding: utf8 -*-
import os
print os.getcwd()
Veja que acima, nós adicionamos a biblioteca "unittest" e na outra o "os".
Ah! E como dá para perceber, o "unittest" vem como padrão no Python. Muito legal! hahah!!!!
Caso não queira importar tudo, pode-se chamar:
#!/usr/bin/python
# -*- coding: utf8 -*-
from datetime import timedelta
d = timedelta(microseconds=-1)
print d
Importando apenas o timedelta do datetime
4.6) "Grandes poderes trazem grandes responsabilidades."
A linguagem Python deixa você fazer muitas coisas, que outras linguagens não deixam, como acesso a atributos protected.
Ou seja, não é uma linguagem "burocrática", entãããããããão tome cuidado com o que você vai fazer.
Usos da Linguagens
O Python é poderoso. Há muitos tipos de uso como:
- em scripts
- web, usando Frameworks como,
Django,
Flask,
Zope, etc
- CMS, como
Plone
- Sistemas embarcados
- Games, usando por exemplo o PyGame,
PyOpenGL
-
Jython - Python rodando na JVM
-
IronPython - para .NET
- Procesamento de imagens -
PIL - Python Imaging Library
- Interfaces Gráficas -
PyGTK, PyQt
- etc.
Conclusão
Gostaria de escrever muito mais coisa sobre a linguagem, mas o post já está ficando comprido demais. O que escrevi foi o básico e bem superficial. Abaixo ficará algumas fontes, para quem se interessar mais. Ou entre em contato comigo no
@AleUehara
E por último digite no interpretador python:
import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Fontes:
Site Oficial - Python
Python Brasil
Evento Python Brasil
Wikipedia - Python
Django Brasil
Python - Google Groups
Google Python Style Guide
Code Academy
Learn Python
- Livros
Dive into Python
Livros de Python
6 Livros Gratuitos
Aprenda a Programar (em pt-br)
Tutorial de Python (em pt-br)
- Curso
Globalcode - Academia Python
- Video
Introducing Python
Show me Do
Python Brasil [5]
- Aplicativo no iPhone
Python for iOS
- Curiosidade
Mandelbrot in Python