15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

if isinstance(bytes_or_str, str):

value = bytes_or_str.encode('utf-8')

else:

value = bytes_or_str

return value # Instância de bytes

No Python 2, é necessário um método que aceite um valor str ou unicode e

sempre retorne unicode.

# Python 2

def to_unicode(unicode_or_str):

if isinstance(unicode_or_str, str):

value = unicode_or_str.decode('utf-8')

else:

value = unicode_or_str

return value # Instância de unicode

Será necessário outro método que aceite str ou unicode e sempre retorne um str.

# Python 2

def to_str(unicode_or_str):

if isinstance(unicode_or_str, unicode):

value = unicode_or_str.encode('utf-8')

else:

value = unicode_or_str

return value # Instância de str

Porém, há duas grandes pegadinhas quando se lida com valores puros em 8 bits e

caracteres Unicode no Python.

O primeiro problema ocorre porque, no Python 2, as instâncias de unicode e str

parecem ser do mesmo tipo quando, na realidade, str contém apenas caracteres

ASCII de 7 bits. Entretanto:

• é possível combinar instâncias str e unicode usando o operador + ;

• é possível comparar instâncias str e unicode usando operadores de igualdade

e desigualdade;

• é possível usar instâncias unicode em strings formatadas como %s'.

Todo esse comportamento indica que é possível passar uma instância str ou

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!