16
Abr
7 novidades que virão com o Python 3
1 - O comando print agora necessita de parênteses
Essa mudança foi feita para que o print tenha o mesmo comportamento que os outros métodos.
<built-in function print>
>>> dir(print)
['__call__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__str__', '__subclasshook__']
>>> help(print)
>>> print 'Vai dar erro'
File "<stdin>", line 1
print 'Vai dar erro'
^
SyntaxError: invalid syntax
>>> print('Agora não vai dar erro')
Agora não vai dar erro
>>>
2 - A divisão entre inteiros agora retorna um float por padrão
Para que ter uma divisão com resultado inteiro usa-se '//'.
>>> 1/2
0.5
>>> 1.0/2
0.5
>>> 1//2
0
>>>
3 - As classes são new-style por padrão
As classes herdam a classe object por padrão. Tendo o comportamento das classes new-style.
>>> class Foo: pass
>>> Foo.__class__
<type 'type'>
4 - Unicode é padrão
E além de ser padrão é possível criar variáveis com caracteres especiais.
>>> é = 'oi'
>>> texto = 'ação'
>>> texto
'a\xe7\xe3o'
>>> print(texto)
ação
5 - raw_input agora é input()
O antigo input é jogado as traças e o raw_input é renomeado para input.
>>> input()
f
'f'
>>> raw_input()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'raw_input' is not defined
>>>
6 - xrange agora é range
O antigo range vai para o limbo também e o xrange é renomeado para range
>>> xrange(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'xrange' is not defined
>>> range(4)
range(0, 4)
>>> print(range(5))
range(0, 5)
>>> for i in range(0, 5):
... print(i)
...
0
1
2
3
4
>>>
7 - Nova maneira de formatar strings
Uma maneira muito elegante de exibir variáveis em uma string
>>> "Meu nome é {0}".format("andrews")
'Meu nome \xe9 andrews'
>>> "2x2={0}".format(2+2)
'2x2=4'
>>> "Meu nome é {nome}".format("andrews")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'nome'
>>> "Meu nome é {nome}".format(nome="andrews")
'Meu nome \xe9 andrews'
>>>
Post excelente!
Todas as mudanças estão sendo muito boas a meu ver. O que mais gostei foi a da divisão e do método format, que achei esplêndido, isso finalmente se tornou uma boa alternativa para as linguagens que permitem interpolação de strings com expressões arbitrárias embarcadas na própria string.
Boa viagem e boa sorte na palestra e treinamento que irá ministrar no Fisl!
Abril 16, 2008 as 11:02 a.m.Muito bacana o resumo, parabéns! Realmente já tinha passado da hora de resolver essas questões de range vs xrange e input vs raw_input.
Abril 16, 2008 as 11:57 a.m.Muito bom! Creio que essas são as principais mudanças, mas se puder nos adiantar mais coisas... ;-)
Abril 18, 2008 as 2:22 p.m.Muito bom..
Gostei das novas mudanças..
Abraços
Abril 23, 2008 as 3:45 p.m.