6930
Comentário:
|
9360
cleberz@ufpr.br
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 35: | Linha 35: |
Além da opção de ir ao site oficial, o Python geralmente já vem com o sistema ou a distribuição tem um pacote pronto pra instalar. | Além da opção de ir ao site oficial, o Python geralmente já vem com o sistema ou a distribuição tem um pacote pronto pra instalar. |
Linha 37: | Linha 37: |
Depois que você "pegar" melhor a linguagem, experimente conhecer os módulos específicos para Linux. | Depois que você "pegar" melhor a linguagem, experimente conhecer os módulos específicos para Linux. |
Linha 56: | Linha 57: |
Python não é compilada, mas sim interpretada, assim como PHP, Perl e muitas outras, ou seja, não há o processo de compilação. O que acontece é que o código-fonte (ou script) é "traduzido" direto, através de um interpretador (imagine que ele é um intérprete mesmo, pois é assim que funciona!). | Python não é compilada, mas sim interpretada, assim como PHP, Perl e muitas outras, ou seja, não há o processo de compilação. O que acontece é que o código-fonte (ou script) é "traduzido" direto, através de um interpretador (imagine que ele é um intérprete mesmo, pois é assim que funciona!). Observação: Geralmente, quando uma linguagem é interpretada, existe um código intermediário (''bytecode''), com o qual o programador não precisa se preocupar. Seria muito lento interpretar diretamente o texto do código fonte. No caso do Python, o ''bytecode'' é salvo em arquivos '''.pyc''' e '''.pyo'''. |
Linha 71: | Linha 72: |
Python é dinamicamente tipado, o que significa que se você usou uma variável para armazenar um inteiro, nada lhe impede de usá-la posteriormente para armazenar uma string (frase). Na verdade, variáveis em Python não são declaradas, o que lhe dá muita flexibilidade. Quem determina o tipo de uma variável é o próprio interpretador. Se você escreve x = 2 FRASE = 'Isso é um exemplo simples e bobo' O interpetador já sabe que x é um inteiro e FRASE é uma string. Mas isso não lhe impede de, posteriormente, escrever x = 'agora tudo mudou' FRASE = 3.2 Como x já disse, tudo mudou, e isso é bem natural. Na verdade, raras são as vezes em que você precisa se preocupar com tipos. Geralmente você simplesmente atribui um valor a uma variável e pronto! Isso é bem simples. Então aqui vão alguns exemplos de tipos: x = 2 #inteiro p = 3.1415 #real, ou ponto flutuante estringue = 'alguma frase' #string lista = [3,4,5] #lista com elementos inteiros lista2 = [2,'tres',4.0,[5,6]] #lista mista e aninhada tupla1 = (1,2,3,'quatro') #isso se chama tupla. É como uma lista, mas não pode ser mudada dic = {'site':'Python Brasil','url':'www.pythonbrasil.com.br'} # isso é um dicionário, que não passa de uma lista com qualquer tipo de indexador |
|
Linha 72: | Linha 106: |
* str * unicode * bool * float * int * long * complex * file * decimal (proposto, ainda não faz parte do Python) |
|
Linha 74: | Linha 117: |
* list * tuple * dict |
|
Linha 77: | Linha 123: |
== Estruturas de iteração ou loop == * for Usando for: Se você programa em C, vai perceber que o for em Python é diferente. Ele itera em cima de listas. Por exemplo: metallica=['James','Kirk','Lars','Trujillo'] for membro in metallica: print membro Ou seja, para cada elemento da lista, itere. Você terá acesso ao item corrente (print membro). Se quiser fazer iterações sobre progressões aritméticas, use a função range, que cria uma lista de inteiro em sequencia. Exemplo: for i in range(50): print i Isso vai imprimir na tela os números de 0 a 49. |
|
Linha 78: | Linha 143: |
* break/continue === Iteradores (estrutura "for") === |
|
Linha 83: | Linha 145: |
* try - except * try - finally |
|
Linha 86: | Linha 150: |
Uma das características que me surpreendeu foi a facilidade de criar módulos simples. Por exemplo, se você quer criar chamado ''funcoesuteis'', é só criar um arquivo chamado ''funcoesuteis.py'' no mesmo diretório do seu programa principal. Nesse arquivo, coloque todos os '''def'''s e '''class'''es que quiser. No programa que for usar esse módulo, é só colocar {{{import funcoesuteis}}} e usar as funções como {{{funcoesuteis.funcao1()}}}, {{{funcoesuteis.funcao2()}}}, etc. Se quiser poupar digitação, use a forma {{{from funcoesuteis import funcao1, funcao2}}} e chame as funções diretamente: {{{funcao1()}}}, {{{funcao2()}}}. | Uma das características que me surpreendeu foi a facilidade de criar módulos simples. Por exemplo, se você quer criar um módulo chamado ''funcoesuteis'', é só criar um arquivo chamado ''funcoesuteis.py'' no mesmo diretório do seu programa principal. Nesse arquivo, coloque todos os '''def'''s e '''class'''es que quiser. No programa que for usar esse módulo, é só colocar {{{import funcoesuteis}}} e usar as funções como {{{funcoesuteis.funcao1()}}}, {{{funcoesuteis.funcao2()}}}, etc. Se quiser poupar digitação, use a forma {{{from funcoesuteis import funcao1, funcao2}}} e chame as funções diretamente: {{{funcao1()}}}, {{{funcao2()}}}. |
Linha 96: | Linha 160: |
(Sugestão: Coloca o programa sim! Assim o tutorial "cresce" junto com o leitor, em vez de ficar só no conhecimento básico - tem é que mergulhar fundo!) | (Sugestão: Coloca o programa sim! Assim o tutorial "cresce" junto com o leitor, em vez de ficar só no conhecimento básico - tem é que mergulhar fundo! Ao infinito e além!!) |
Infelizmente ainda não está pronto, é um "vaporware" Mas você que domina Python pode ajudar a fazê-lo acontecer. Bom, por que mais um guia? Primeiro, os guias que estão no site são resumidos e falam apenas de poucos tópicos, falta um documento para realmente iniciar pessoas a linguagem Python, de forma efetiva. Um guia de introdução, ensinando a baixar e usar um pouco da linguagem, o "feijão com arroz" é um primeiro passo para termos mais gente envolvida e um trampolim para a pessoa buscar mais informações em outros tutorais. Eu pretendo escrever aqui este guia, mas que não seja o "guia do Rudá", espero que todos possam contribuir (inclusive se os autores de outros IntrosPython aqui permitirem, ripar o conteúdo e mover para este documento). Aliás, uma pequena crítica, não sou contra identificar o autor de um documento, é respeito ao autor, mas eu noto que não estamos "botando o dedo" no documento dos outros, alterando, contribuído, criticando, por mais que se tenha um autor de um documento definido, isto aqui é um Wiki! Vamos rabiscar, mexer, comentar! Não sejamos tímidos. :)
Guia de Introdução A Linguagem Python
Este é o Guia do PythonBrasil para uma rápida introdução a linguagem Python.
O que é Python?
O que eu posso fazer com Python?
Um monte de coisas! Testar idéias de programação; automatizar tarefas repetitivas (manipulação de texto, cópia de arquivos, outras); criar programas em modo texto; programas em modo gráfico; programas que para a rede e a internet; etc.
O que eu não posso fazer com Python?
Por que eu deveria usar Python e não Perl, Java ou outra linguagem?
Python e Perl são linguagens com propósitos bastante parecidos. Uma vantagem do Python é a sua regularidade e facilidade de leitura (e se você já programou em Perl, sabe que isso é importante! Alguém tem/quer exemplos?).
Python e Java são linguagens bem diferentes, o que torna a comparação difícil ou sem signficado. Python sugere um desenvolvimento rápido, do tipo "editar-executar" (Python compila automaticamente quando executamos o programa). Já Java ("Já Java", hahaha) exige que o programador declare tipos, visibilidade de funções, separe cada classe (pública) em arquivos diferentes, e o desenvolvimento é do tipo "editar-compilar-executar" (ainda que o arquivo gerado tenha que ser interpretado...). Outra vantagem do Python que me vem à mente agora são suas estruturas de dados (p.ex.: listas e dicionários). Java usa classes para prover essas funcionalidades, mas geralmentes são necessários muito mais comandos (e casts) para obter o mesmo resultado.
Aonde eu adquiro o Python?
O site oficial é: [http://python.org]
Linux
Além da opção de ir ao site oficial, o Python geralmente já vem com o sistema ou a distribuição tem um pacote pronto pra instalar.
Depois que você "pegar" melhor a linguagem, experimente conhecer os módulos específicos para Linux.
Windows
No site ofical tem um instalador pra Windows que é muito simples! Nem parece que está instalando uma linguagem de programação...
Macintosh
Entendendo Python
- Se você NUNCA programou antes, é necessário entender alguns conceitos básicos.
- Por exemplo: você sabe o que é um "executável" certo? Experimente abrir um arquivo desses em algum editor de textos. A não ser que você tenha vivido anos na Matrix, não entenderá nada! Isso acontece porque o programa está escrito, ali, em linguagem de máquina, ou seja, apesar de você não entender nada, o computador entende muito bem. Mas não pense que alguém escreveu aquilo do jeito que está. Também não foi escrito ao estilo "morse" (10010010110)... inicialmente, o programador escreveu o que chamamos de "código-fonte" em alguma linguagem de programação, como C, Pascal ou Java, e, depois de terminado, compilou o código, ou seja, traduziu de C,Pascal ou Java para linguagem de máquina (também chamada de Assembly). Essas linguagens que eu citei acima são as linguagens compiladas, pois antes de serem executadas, seus códigos-fonte devem ser devidamente compilados.
Python não é compilada, mas sim interpretada, assim como PHP, Perl e muitas outras, ou seja, não há o processo de compilação. O que acontece é que o código-fonte (ou script) é "traduzido" direto, através de um interpretador (imagine que ele é um intérprete mesmo, pois é assim que funciona!). Observação: Geralmente, quando uma linguagem é interpretada, existe um código intermediário (bytecode), com o qual o programador não precisa se preocupar. Seria muito lento interpretar diretamente o texto do código fonte. No caso do Python, o bytecode é salvo em arquivos .pyc e .pyo. Tal fato adiciona muita produtividade à linguagem, já que o processo de programar é somente escrever-rodar, ao contrário de escrever-compilar-rodar. Veja que o ciclo dum programa interpretado é bem mais eficiente, pois a fase de testes é MUITO simplificada:
Python: escrever-testar-corrigir-escrever-testar-distribuir C: escrever-compilar-testar-corrigir-compilar-testar-distribuir
- Se você já tem um interpretador instalado em seu sistema, experimente escrever o seguinte script:
- print "Olá, mundo"
Tipos de dados, constantes, variáveis e expressões
- Python é dinamicamente tipado, o que significa que se você usou uma variável para armazenar um inteiro, nada lhe impede de usá-la posteriormente para armazenar uma string (frase). Na verdade, variáveis em Python não são declaradas, o que lhe dá muita flexibilidade. Quem determina o tipo de uma variável é o próprio interpretador. Se você escreve
- x = 2 FRASE = 'Isso é um exemplo simples e bobo'
- x = 'agora tudo mudou' FRASE = 3.2
- Como x já disse, tudo mudou, e isso é bem natural. Na verdade, raras são as vezes em que você precisa se preocupar com tipos. Geralmente você simplesmente atribui um valor a uma variável e pronto! Isso é bem simples. Então aqui vão alguns exemplos de tipos:
x = 2 #inteiro
p = 3.1415 #real, ou ponto flutuante
estringue = 'alguma frase' #string
lista = [3,4,5] #lista com elementos inteiros
lista2 = [2,'tres',4.0,[5,6]] #lista mista e aninhada
tupla1 = (1,2,3,'quatro') #isso se chama tupla. É como uma lista, mas não pode ser mudada
dic = {'site':'Python Brasil','url':'www.pythonbrasil.com.br'} # isso é um dicionário, que não passa de uma lista com qualquer tipo de indexador
Tipos simples (números, strings)
- str
- unicode
- bool
- float
- int
- long
- complex
- file
- decimal (proposto, ainda não faz parte do Python)
Tipos agrupados (listas, tuplas, dicionários)
- list
- tuple
- dict
Estuturas de controle
- if
Estruturas de iteração ou loop
- for
- Usando for: Se você programa em C, vai perceber que o for em Python é diferente. Ele itera em cima de listas. Por exemplo:
- metallica=['James','Kirk','Lars','Trujillo']
for membro in metallica:
- print membro
- Ou seja, para cada elemento da lista, itere. Você terá acesso ao item corrente (print membro). Se quiser fazer iterações sobre progressões aritméticas, use a função range, que cria uma lista de inteiro em sequencia. Exemplo:
for i in range(50):
- print i
- Isso vai imprimir na tela os números de 0 a 49.
- while
Tratamento de erros e exceções
- try - except
- try - finally
Módulos
Uma das características que me surpreendeu foi a facilidade de criar módulos simples. Por exemplo, se você quer criar um módulo chamado funcoesuteis, é só criar um arquivo chamado funcoesuteis.py no mesmo diretório do seu programa principal. Nesse arquivo, coloque todos os defs e classes que quiser. No programa que for usar esse módulo, é só colocar import funcoesuteis e usar as funções como funcoesuteis.funcao1(), funcoesuteis.funcao2(), etc. Se quiser poupar digitação, use a forma from funcoesuteis import funcao1, funcao2 e chame as funções diretamente: funcao1(), funcao2().
(Melhorar: exemplos mais completos, descrição menos concisa e mais fácil de seguir, talvez explicar packages).
Classes
Um exemplo Completo
Pretendo deixar um aplicativo de exemplo para sintetizar tudo. Uma idéia que me ocorreu agora é fazer um programinha gráfico (usando tk) de perguntas e repostas (quiz). Não sei se é confundir muito botar tk no meio, mas creio que se a pessoa entendeu o tutorial vai ser capaz de entender um pouco do código, mesmo porque com o quiz eu posso usar dicionários, listas, abrir/fechar arquivos (aka usar módulos), talvez usar classes e mostrar um exemplo prático que teoricamente rodaria em todas as plataformas.
(Sugestão: Coloca o programa sim! Assim o tutorial "cresce" junto com o leitor, em vez de ficar só no conhecimento básico - tem é que mergulhar fundo! Ao infinito e além!!)