Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Dados None e Binários | Interações Entre Tipos Diferentes
Tipos de Dados em Python

bookDados None e Binários

Programas reais lidam com valores ausentes e dados binários. Utilize None para indicar "sem valor" e bytes/bytearray para conteúdo binário bruto. Saiba quando cada um é apropriado e como converter com segurança entre texto e bytes.

None para "Sem Valor"

None é um único objeto que significa "nada aqui".

1234567
result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
copy

Utilize is None em vez de verificações de veracidade, pois 0 e "" também são considerados falsos.

123
value = 0 print(not value) # True print(value is None) # False
copy

Valores padrão e alternativas

None é utilizado como um marcador claro de que um valor está intencionalmente ausente. Permite distinguir entre "nenhum valor fornecido" e valores válidos como 0 ou "", tornando valores padrão e alternativas mais seguros e previsíveis.

1234567
x = None print(x or "unknown") # 'unknown' print("unknown" if x is None else x) x = 0 print(x or "unknown") # 'unknown' (maybe wrong) print("unknown" if x is None else x) # 0
copy

Funções e Parâmetros

Este exemplo mostra como uma função utiliza um parâmetro definido como None para sinalizar que nenhuma tag foi fornecida. Isso permite que a função atribua um valor padrão seguro, mas ainda possibilita que quem chama a função substitua esse valor quando necessário.

1234567
def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" print(add_tag("hello")) # [general] hello print(add_tag("hello", "news")) # [news] hello
copy

bytes e bytearray para Dados Binários

str armazena texto, bytes e bytearray armazenam valores brutos de bytes.

1234
b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
copy

Codificação e Decodificação

Codificação converte texto em bytes para que possa ser armazenado ou transferido de forma confiável, enquanto a decodificação restaura esses bytes de volta para texto legível. O uso de uma codificação definida como UTF-8 garante que os caracteres sejam preservados corretamente.

123
text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
copy

Mistura de Texto e Bytes

Texto (str) e bytes (bytes) não podem ser combinados diretamente porque representam tipos de dados diferentes. Para misturá-los com segurança, é necessário converter o texto em bytes primeiro, utilizando uma codificação explícita.

123456
try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
copy

Diferenças de Comprimento

Alguns caracteres ocupam um elemento de texto, mas múltiplos bytes, então seu comprimento em str e na forma codificada pode ser diferente. Isso ocorre porque codificações como UTF-8 podem usar mais de um byte para representar um único caractere.

123
ch = "é" len(ch) # 1 len(ch.encode()) # 2
copy

Arquivos

Arquivos binários devem ser abertos no modo "rb" para que seus bytes brutos sejam lidos exatamente como armazenados. Isso impede que o Python tente interpretar os dados como texto.

# with open("example.png", "rb") as f:
#     blob = f.read()
question mark

Qual verificação detecta corretamente um valor ausente?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain more about when to use None versus other default values?

How do I safely convert between text and bytes in Python?

What are some common mistakes when handling binary data and missing values?

bookDados None e Binários

Deslize para mostrar o menu

Programas reais lidam com valores ausentes e dados binários. Utilize None para indicar "sem valor" e bytes/bytearray para conteúdo binário bruto. Saiba quando cada um é apropriado e como converter com segurança entre texto e bytes.

None para "Sem Valor"

None é um único objeto que significa "nada aqui".

1234567
result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
copy

Utilize is None em vez de verificações de veracidade, pois 0 e "" também são considerados falsos.

123
value = 0 print(not value) # True print(value is None) # False
copy

Valores padrão e alternativas

None é utilizado como um marcador claro de que um valor está intencionalmente ausente. Permite distinguir entre "nenhum valor fornecido" e valores válidos como 0 ou "", tornando valores padrão e alternativas mais seguros e previsíveis.

1234567
x = None print(x or "unknown") # 'unknown' print("unknown" if x is None else x) x = 0 print(x or "unknown") # 'unknown' (maybe wrong) print("unknown" if x is None else x) # 0
copy

Funções e Parâmetros

Este exemplo mostra como uma função utiliza um parâmetro definido como None para sinalizar que nenhuma tag foi fornecida. Isso permite que a função atribua um valor padrão seguro, mas ainda possibilita que quem chama a função substitua esse valor quando necessário.

1234567
def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" print(add_tag("hello")) # [general] hello print(add_tag("hello", "news")) # [news] hello
copy

bytes e bytearray para Dados Binários

str armazena texto, bytes e bytearray armazenam valores brutos de bytes.

1234
b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
copy

Codificação e Decodificação

Codificação converte texto em bytes para que possa ser armazenado ou transferido de forma confiável, enquanto a decodificação restaura esses bytes de volta para texto legível. O uso de uma codificação definida como UTF-8 garante que os caracteres sejam preservados corretamente.

123
text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
copy

Mistura de Texto e Bytes

Texto (str) e bytes (bytes) não podem ser combinados diretamente porque representam tipos de dados diferentes. Para misturá-los com segurança, é necessário converter o texto em bytes primeiro, utilizando uma codificação explícita.

123456
try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
copy

Diferenças de Comprimento

Alguns caracteres ocupam um elemento de texto, mas múltiplos bytes, então seu comprimento em str e na forma codificada pode ser diferente. Isso ocorre porque codificações como UTF-8 podem usar mais de um byte para representar um único caractere.

123
ch = "é" len(ch) # 1 len(ch.encode()) # 2
copy

Arquivos

Arquivos binários devem ser abertos no modo "rb" para que seus bytes brutos sejam lidos exatamente como armazenados. Isso impede que o Python tente interpretar os dados como texto.

# with open("example.png", "rb") as f:
#     blob = f.read()
question mark

Qual verificação detecta corretamente um valor ausente?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 3
some-alt