15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

>>>

foo bar

Isso é equivalente a usar o formatador '%s' e o operador %.

print('%s' % 'foo bar')

>>>

foo bar

O problema é que a string humanamente legível não deixa claro qual é o tipo em

que o valor foi definido. Por exemplo, observe como a saída default de print não

consegue distinguir entre o tipo número do valor 5 e o tipo string do valor '5'.

print(5)

print('5')

>>>

5

5

Se estivermos depurando um programa com print, é importante identificar esses

tipos diferentes. Na maioria esmagadora das vezes, o que queremos ver enquanto

depuramos é a versão repr do objeto. A função nativa repr devolve a

representação exibíveis de um objeto, que deve ser sua representação em string

mais claramente distinguível. Para tipos nativos, a string devolvida por repr é

uma expressão válida em Python.

a = '\x07'

print(repr(a))

>>>

'\x07'

Passar o valor de repr para a função nativa eval deve resultar no mesmo objeto

Python com que começamos (mas tenha em mente que, na prática, devemos usar

o eval apenas onde for estritamente necessário e com extrema cautela).

b = eval(repr(a))

assert a == b

Quando estamos depurando com print, devemos usar repr no valor antes de

mostrá-lo na tela para garantir que quaisquer diferenças entre tipos fiquem muito

claras.

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!