Python 3.x - Ihh.. E agora ? Como faço ?

2,830 views

Published on

Palestra no XI Encontro do Grupo de Usuários de Python de Pernambuco

Python 3.x - Ihh.. E agora ? Como faço ?

  1. 1. Python 3.x - Parte 1 E agora ?? O que eu faço ??Marcel CaracioloDaker FernandesThais Bione
  2. 2. Mito: Eu só sei Python 2.x !!!FUUUUUUUUUUUUUU...
  3. 3. O foco desta apresentação não é ensinar Python e sim mostrar as diferenças do Python 2.x em relação ao Python 3.x
  4. 4. Python 3.xA primeira versão 3.0 foi em 2008! De acordo com o Guido , o objetivo foi: Correção de vários problemas de design Facilitar ainda mais o aprendizado para os que estão iniciandoAtualmente na versão 3.2 - (23/03/2011) http://python.org/download/
  5. 5. Python 3.xTipos básicos - Classes Python 2.x class C: #classic class class C(object): #new-style class Python 3.x class C(object): #new-style class
  6. 6. Python 3.xTipos básicos - cmp e __cmp__ Python 2.x >>> def reverse_numeric(x, y): return y - x >>> sorted([5, 2, 4, 1, 3], cmp=reverse_numeric) [5, 4, 3, 2, 1] Python 3.x list.sort(key= cmp_to_key(reverse_numeric) )Método cmp não existe mais! Usar __lt__ , __eq__ with __hash__()
  7. 7. Python 3.xTipos básicos - Strings str(anything) Python 2.x unicode(anything) u”poço de açucar é essa menina!” str(anything) Python 3.x unicode(anything) “poço de açucar é essa menina!”Todas as STRINGS são UNICODE por padrão!
  8. 8. Python 3.xTipos básicos - Inteiros e Longos Python 2.x x = 10000000000000000L long(x) Python 3.x x = 10000000000000000 int(x) Não mais o tipo long! Todos são inteiros!
  9. 9. Python 3.x Tipos básicos - OctaisPython 2.x x = O755Python 3.x x = 0o755 Octais sintaxe diferente!
  10. 10. Python 3.x Tipos básicos - DivisãoPython 2.x x = 2/4 # Resp: 0Python 3.x x = 2/4 # Resp: 0.5Divisão por Inteiros retornam Float!
  11. 11. Python 3.xTipos básicos - Comparações Python 2.x if x <> y: #ou if x != y Python 3.x if x!=y Não há mais o operador <> !
  12. 12. Python 3.xTipos básicos - Dicionários Python 2.x a = {} a.has_key(‘casa’) Python 3.x ‘casa’ in a Não há mais o método has_key em Dicts!
  13. 13. Python 3.xTipos básicos - Dicionários Python 2.xa = {‘nome’: ‘marcel’, ‘idade’: 26}a.items() # [(‘nome’,‘marcel’),( ‘idade’, 26)]a.keys() # [‘nome’, ‘idade’] Python 3.x a = {‘nome’: ‘marcel’, ‘idade’: 26}list(a.items()) # [(‘nome’,‘marcel’),( ‘idade’, 26)]list(a.keys()) # [‘nome’, ‘idade’] Não retornam como listas, não podem ser indexados!
  14. 14. Python 3.x Tipos básicos - next() Python 2.x iterator.next() Python 3.x next(iterator) iterator.next()Há uma função global next() para iteradores!
  15. 15. Python 3.x Tipos básicos - repr() Python 2.x `x` ou repr(x) Python 3.x repr(x)`` para capturar representação não mais existe!
  16. 16. Python 3.x Try ... Except.. Python 2.x try: import module except ImportError, e: pass Python 3.x try: import module except ImportError as e: passCaptura de erros e objetos com a keyword ‘as’
  17. 17. Python 3.x raise Python 2.x raise MyException , ‘mensagem de erro’ Python 3.x raise MyException ( ‘mensagem de erro’ )Lançar mensagens com método apenas!
  18. 18. Python 3.x List Comprehensions Python 2.x [ i for i in 1,2] #Isso é TENSO Python 3.x [i for i in (1,2)]Iterar sobre tuplas apenas com parênteses!
  19. 19. Python 3.xI/O libraryPython 2.x a = open(‘arquivo.txt’,’w’) a.write(‘hello’)Python 3.x with open(‘arquivo.txt’,’w) as f: f.write(‘hello’) P
  20. 20. 2to3 conversorJá instalado com seu Python 3.x ou encontrado em ../Tools/scripts def greet(name): print "Hello, {0}!".format(name) print "Whats your name?" name = raw_input() greet(name) $ 2to3 example.py def greet(name): print("Hello, {0}!".format(name)) print("Whats your name?") name = input() greet(name)http://docs.python.org/library/2to3.html
  21. 21. Python 3.xReferências http://www.slideshare.net/jza/python-3000 http://diveintopython3.org/porting-code-to-python-3- with-2to3.html http://docs.python.org/library/2to3.html
  22. 22. Python 3.x - Parte 1 E agora ?? O que eu faço ??Marcel CaracioloDaker FernandesThais Bione

×