Não importa qual dos três nomes você escolha. Todos eles se referem à mais nova versão majoritária (estável) da linguagem Python, disponível para uso desde 3 de dezembro de 2008. A escolha por uma versão majoritária (3.0) se deve à várias mudanças bruscas que foram feitas na sintaxe da linguagem e em sua API (Application Programming Interface), o que quebra alguns elos de compatibilidade com versões anteriores (i.e., série 2.x).
De fato, foram muitas mudanças, tantas que a série de PEPs numerados entre 3000 e 3099 foram designadas apenas para descrever funcionalidades da nova versão da linguagem. Além disso, a documentação do Py3K vem com uma seção especial chamada What's New In Python 3.0, que mostra os aspectos em que a nova versão difere das anteriores. Com base nisso e em pequenos testes que fiz na nova versão, resolvi escrever este texto para mostrar ao leitor alguns pontos importantes de mudança.
1. print tornou-se uma função. Isso mesmo! Se você tentar usar o modo antigo do print no Py3K, vai resultar num erro como o mostrado abaixo:
De fato, foram muitas mudanças, tantas que a série de PEPs numerados entre 3000 e 3099 foram designadas apenas para descrever funcionalidades da nova versão da linguagem. Além disso, a documentação do Py3K vem com uma seção especial chamada What's New In Python 3.0, que mostra os aspectos em que a nova versão difere das anteriores. Com base nisso e em pequenos testes que fiz na nova versão, resolvi escrever este texto para mostrar ao leitor alguns pontos importantes de mudança.
1. print tornou-se uma função. Isso mesmo! Se você tentar usar o modo antigo do print no Py3K, vai resultar num erro como o mostrado abaixo:
>>> print "http://versaopropria.blogspot.com" SyntaxError: invalid syntax (<pyshell#0>, line 1) >>>
Agora o uso de print deve ser feito como para qualquer função: print(). Particularmente, eu achei muito interessante esta mudança, visto que o comando ficou mais poderoso. Exemplos:
>>> print("http://versaopropria.blogspot.com") http://versaopropria.blogspot.com >>> >>> print("Calculando...", 1 + 1) Calculando... 2 >>> >>> print("Evitando a quebra de linha.", end=' '); print("A quebra foi substituída por um espaço!") Evitando a quebra de linha. A quebra foi substituída por um espaço! >>> >>> print() # Uma linha em branco. >>> >>> address = "http://versaopropria.blogspot.com" >>> >>> print("Salve", address, "nos seus favoritos! :D") Salve http://versaopropria.blogspot.com nos seus favoritos! :D >>>
2. range() se comporta agora como xrange(). O segundo não existe mais! A diferença entre os dois era que, enquanto o primeiro criava uma lista completa a partir dos valores passados, o segundo criava a lista apenas quando os valores eram acessados, o que poupava memória quando a lista não estava em uso.
3. A divisão com uma barra simples retorna float. Use barra dupla para que um inteiro seja retornado.
3. A divisão com uma barra simples retorna float. Use barra dupla para que um inteiro seja retornado.
>>> 1 / 7 0.14285714285714285 >>> 1 // 7 0 >>> 10 / 3 3.3333333333333335 >>> 10 // 3 3 >>>
4. Finalmente UTF-8! Não existe mais a necessidade de se indicar ao interpretador que você vai usar UTF-8. Isso agora é padrão. Só lembre de não abusar! Tenha sempre o PEP8 em mente!
5. as, with, True e False agora são palavras reservadas da linguagem.
6. Agora existe apenas um sinal de diferente: !=. <> foi removido.
7. Uma nova forma de se formatar Strings. Como strings em Python são objetos, foi criado um método chamado format() para substituir o uso do caractere de módulo. Embora na versão 3.0 ainda seja possível uma construção como:
5. as, with, True e False agora são palavras reservadas da linguagem.
6. Agora existe apenas um sinal de diferente: !=. <> foi removido.
7. Uma nova forma de se formatar Strings. Como strings em Python são objetos, foi criado um método chamado format() para substituir o uso do caractere de módulo. Embora na versão 3.0 ainda seja possível uma construção como:
>>> "Meu blog é: %s." % "http://versaopropria.blogspot.com" Meu blog é: http://versaopropria.blogspot.com. >>>
Esta forma será abandonada na versão 3.1 da linguagem, o que é um incentivo para que não seja mais usada. O mesmo código poderia ser reescrito com o uso do método format():
>>> "Meu blog é: {0}.".format("http://versaopropria.blogspot.com") Meu blog é: http://versaopropria.blogspot.com. >>>
Para quem não entendeu, o novo método funciona basicamente como o anterior, mas em vez de você marcar onde vai ser um float, inteiro ou string, você apenas define onde entrarão o primeiro, segundo e enésimo valores, definidos na própria string, de {0} a {n}. Então você precisa suceder a string com .format() e adicionar, como parâmetros para o método, os valores que deverão ser substituídos na string.
Obviamente esta é apenas a ponta do iceberg, maiores informações podem ser obtidas na página do PEP3101, que é o que define o funcionamento deste novo ambiente.
Pelo pouco que pude perceber da nova versão de Python, a linguagem evoluiu bastante, mesmo que isso tenha custado a perda de compatibilidade com as versões anteriores. Ao meu ver, essa perda de compatibilidade é necessária para que antigas decisões que não se mostraram muito boas, possam ser corrigidas. Minha única crítica fica para o time de desenvolvimento que lançou apenas o instalador para o Windows.Ignoraram Esqueceram os usuários de OS X e Linux! Podiam ter, ao menos, trabalhado em conjunto com a Apple e com a Canonical, para lançar simultaneamente versões para Mac e Ubuntu...
Com o tempo, postarei aqui novas mudanças que eu encontrar. E você? Encontrou alguma mudança para sua forma de programar em Python? Achou as mudanças boas ou ruins? Comente!
Obviamente esta é apenas a ponta do iceberg, maiores informações podem ser obtidas na página do PEP3101, que é o que define o funcionamento deste novo ambiente.
Pelo pouco que pude perceber da nova versão de Python, a linguagem evoluiu bastante, mesmo que isso tenha custado a perda de compatibilidade com as versões anteriores. Ao meu ver, essa perda de compatibilidade é necessária para que antigas decisões que não se mostraram muito boas, possam ser corrigidas. Minha única crítica fica para o time de desenvolvimento que lançou apenas o instalador para o Windows.
Com o tempo, postarei aqui novas mudanças que eu encontrar. E você? Encontrou alguma mudança para sua forma de programar em Python? Achou as mudanças boas ou ruins? Comente!
Leia Também
- Manipulação do PATH de Python – Como funciona e como alterar a procura por módulos em Python.
- O Estilo de Programação PEP 8 – Um ótimo estilo de programação para programadores Python.
- O Zen de Python – Um zen para boas práticas de programação.
- Eclipse com Suporte a Python no OS X – Da instalação da IDE à execução de um código Python, tudo desvendado.
Fala brother!!!
ResponderExcluirExcelente artigo mano.
Não tive contato ainda com essa versão embora já tenha lido algo. As questões de tranformar print e outras em função, para o programadores em C, só tem a acrescentar pois parece mais com a linguagem progenitora.
O interessante da evolução da linguagem é fato de não ser jogado as mudanças de uma hora para outra, por exemplo, a questão da divisão, salvo engano, está disponível deste a versão 2.5 ou 2.6.
Kra agora do tendo que aprender a C++, a melhor pra mim foi qdo vc me indicou a aprender C, valeu mesmo.
abraço.
Salve!
ResponderExcluirCom certeza, o planejamento foi muito bom! Mas não podia deixar de ser. Imagine trocar a sintaxe da linguagem, depois de milhares de pessoas estarem familiarizadas com ela? Ponto para o time de desenvolvimento!
Gostei das melhorias! Você também gostou? Ponto para a linguagem e ponto para os usuários (programadores)!
Já li algumas reclamações sobre suporte a programação funcional, que não foi melhorada, mas como não uso, não tenho como avaliar. Segundo o que li, criticaram pelo fato de funções como lambda() não terem sido melhoradas.
Com certeza a linguagem C é a melhor que se tem para aprender a programar. Além de doutrinar o programador, é um trampolim para outras tantas linguagens! A melhor coisa que fiz, foi correr atrás para aprendê-la! ;)
Agora, já que vai aprender C++, fica a sugestão de uma série de artigos no seu blog sobre esse processo!
[]!