1. Python 3.x - Parte 1
E agora ?? O que eu faço ??
Marcel Caraciolo
Daker Fernandes
Thais Bione
2. Mito: Eu só sei Python 2.x !!!
FUUUUUUUUUUUUUU...
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. Python 3.x
A 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 iniciando
Atualmente na versão 3.2 - (23/03/2011)
http://python.org/download/
5. Python 3.x
Tipos 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. Python 3.x
Tipos 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. Python 3.x
Tipos 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. Python 3.x
Tipos 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. Python 3.x
Tipos básicos - Octais
Python 2.x
x = O755
Python 3.x
x = 0o755
Octais sintaxe diferente!
10. Python 3.x
Tipos básicos - Divisão
Python 2.x
x = 2/4 # Resp: 0
Python 3.x
x = 2/4 # Resp: 0.5
Divisão por Inteiros retornam Float!
11. Python 3.x
Tipos 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. Python 3.x
Tipos 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. Python 3.x
Tipos básicos - Dicionários
Python 2.x
a = {‘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. 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. 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. 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:
pass
Captura de erros e objetos com a keyword ‘as’
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. 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. Python 3.x
I/O library
Python 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. 2to3 conversor
Já instalado com seu Python 3.x ou encontrado em ../Tools/scripts
def greet(name):
print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)
$ 2to3 example.py
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)
http://docs.python.org/library/2to3.html