Algumas notas sobre a linguagem. A partir deste post irei apresentar a linguagem.
Constantes importantes
None semânticamente equivalente a null em java e NULL em C.
True
False
Funcoes primitivas importantes
print 'ola' imprime ola no stdout. A partir de Python 3.0 o print passou a ser uma função e não uma keyword especial. Assim, a versão correcta em Python 3.o é print('ola')
del x destroi a ligação entre x e o seu valor.
dir(objecto) imprime todos os metodos para este objecto.
help(arg) imprime ajuda sobre arg.
Exemplo:
help(''.center) imprime ajuda sobre metodo center do objecto '' (que é uma string).
Strings
As strings podem ser definidas com ' ou " ou ainda """. usar 'esta forma' ou "esta forma" é absolutamente igual. A vantagem é que não somos obrigados a escapar se quisermos imprimir as aspas. Exemplo:
>>> 'Como quero imprimir uma ", uso a plica sem ter de escapar a aspa'
'Como quero imprimir uma ", uso a plica sem ter de escapar a aspa'
>>>
As 3 aspas seguidas """ são uma forma de criar uma string cujos caracteres brancos são inseridos integralmente na string. Exemplo:
>>> """String com uma
... quebra de linha"""
'String com uma \nquebra de linha'
>>>
Blog em português onde relato a minha aprendizagem de Python. Sendo um blog, ele deve ser lido de baixo para cima e é escrito orientado a uma audiência com alguns conhecimentos de programação. Não tentando ser uma fonte exaustiva de conhecimento sobre Python, pode, no entanto, servir como crash course a esta linguagem.
Thursday, May 21, 2009
Sunday, May 10, 2009
Algumas notas sobre a filosofia de desenho do Python:
Em python tudo é um objecto de 1ª classe. Isto significa que não existem qualquer tipo de restrições enter as operações que se podem fazer a cada tipo de objecto. As funções são objectos de 1ª classe e, como tal, podem ser manipuladas como qualquer outro tipo de objectos. Por exemplo, podem ser passadas para dentro de outras funções, ou serem usadas como valor de retorno de uma função.
Regra geral, não existem construções que só são visíveis em compile-time. Tudo está reificado no runtime..
Directa ou indirectamente tudo herda de object. inclusive números, classes, funções, etc. Não existem tipos especiais (como, por exemplo, os ints em Java). Tudo são objectos.
Por outro lado, a linguagem segue uma filosofia de que o programador deve escrever o mínimo possível. Assim, e como consequência dessa filosofia, existem muito poucas keywords especiais. As variáveis não têm que ser declaradas antes de usadas e não são tipificadas.
Pelo facto de se tentar ter um mínimo de keywords/tokens especiais, não existem keywords para marcar o início de fim de um bloco. É pela identação que o Python sabe quando começa um novo bloco e quando acaba. Exemplo:
Em python tudo é um objecto de 1ª classe. Isto significa que não existem qualquer tipo de restrições enter as operações que se podem fazer a cada tipo de objecto. As funções são objectos de 1ª classe e, como tal, podem ser manipuladas como qualquer outro tipo de objectos. Por exemplo, podem ser passadas para dentro de outras funções, ou serem usadas como valor de retorno de uma função.
Regra geral, não existem construções que só são visíveis em compile-time. Tudo está reificado no runtime..
Directa ou indirectamente tudo herda de object. inclusive números, classes, funções, etc. Não existem tipos especiais (como, por exemplo, os ints em Java). Tudo são objectos.
Por outro lado, a linguagem segue uma filosofia de que o programador deve escrever o mínimo possível. Assim, e como consequência dessa filosofia, existem muito poucas keywords especiais. As variáveis não têm que ser declaradas antes de usadas e não são tipificadas.
Pelo facto de se tentar ter um mínimo de keywords/tokens especiais, não existem keywords para marcar o início de fim de um bloco. É pela identação que o Python sabe quando começa um novo bloco e quando acaba. Exemplo:
if x <> 10 and x < 20):
print "So vou aparecer se a condicar avaliar para True"print "Eu ja nao pertenco ao if. logo apareco sempre"
Por outro lado, como as variáveis não são tipificadas nem declaradas, posso
fazer o seguinte:
x = 54
x = "ola"
A atribuição em python é feita com = e a comparação com ==
A ligação entre nomes (de variáveis ou parâmetros de funções) e o seu valor é
sempre feita por referência. i.e. x=3 significa que o x refere-se ao objecto representado por 3.
A linguagem é fortemente tipificada. Não é em geral possível transformar um objecto
de um dado tipo noutro objecto. Como por exemplo em C em que isto é possível
com casts.
A implementação normal de python corre em cima de uma máquina virtual. A compilação é
sempre feita just in time (normalmente quando um módulo é importado).
Python tem também um garbage collector automático.
Wednesday, May 6, 2009
Livro
Gostei tanto da apresentação do Sr. Alex Martelli que acabei de comprar o seu livro sobre Python:
Python in a nutshell - 2nd edition.
O livro tem cerca de 700 páginas sendo as primeiras cerca de 200 dedicadas à linguagem em si e aos módulos standard mais importantes. Os capítulos seguintes referem-se aos diferentes módulos standard para vários tipos de domínios comuns: IO, Persistência e bases de dados, Controlo de execução, threads, processamento numérico, redes, HTML/XML etc.
Para um livro que tem "in a nutshell" no seu título penso que tem um péssimo titulo. Na realidade este livro é mesmo muito completo pois para além de ensinar a linguagem serve também como documentação técnica para os diferentes módulos standard e até alguns que sendo feitos por terceiras entidades são aconselhados.
O livro foi feito numa altura entre a transição da versão 2.4 para a 2.5 do python. Como tal, não apresenta as diferenças posteriores. Relembro que à data da escrita, a versão mais actual do python (e aconselhada) é a 2.6 e que existe também a versão 3.0 com algumas funcionalidades experimentais.
Python in a nutshell - 2nd edition.
O livro tem cerca de 700 páginas sendo as primeiras cerca de 200 dedicadas à linguagem em si e aos módulos standard mais importantes. Os capítulos seguintes referem-se aos diferentes módulos standard para vários tipos de domínios comuns: IO, Persistência e bases de dados, Controlo de execução, threads, processamento numérico, redes, HTML/XML etc.
Para um livro que tem "in a nutshell" no seu título penso que tem um péssimo titulo. Na realidade este livro é mesmo muito completo pois para além de ensinar a linguagem serve também como documentação técnica para os diferentes módulos standard e até alguns que sendo feitos por terceiras entidades são aconselhados.
O livro foi feito numa altura entre a transição da versão 2.4 para a 2.5 do python. Como tal, não apresenta as diferenças posteriores. Relembro que à data da escrita, a versão mais actual do python (e aconselhada) é a 2.6 e que existe também a versão 3.0 com algumas funcionalidades experimentais.
Saturday, May 2, 2009
Outras implementações de Python
Como referi, existem outras implementações desta linguagem. As duas que considero mais interessantes para referir aqui são:
IronPython é um projecto parecido com o anterior mas destinado à Framework .NET da microsoft.
- Jython
- IronPython
IronPython é um projecto parecido com o anterior mas destinado à Framework .NET da microsoft.
Subscribe to:
Comments (Atom)
