Dados 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".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Utilize is None em vez de verificações de veracidade, pois 0 e "" também são considerados falsos.
123value = 0 print(not value) # True print(value is None) # False
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.
1234567x = 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
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.
1234567def 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
bytes e bytearray para Dados Binários
str armazena texto, bytes e bytearray armazenam valores brutos de bytes.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
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.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
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.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
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.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
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()
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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?
Incrível!
Completion taxa melhorada para 3.45
Dados 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".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Utilize is None em vez de verificações de veracidade, pois 0 e "" também são considerados falsos.
123value = 0 print(not value) # True print(value is None) # False
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.
1234567x = 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
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.
1234567def 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
bytes e bytearray para Dados Binários
str armazena texto, bytes e bytearray armazenam valores brutos de bytes.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
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.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
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.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
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.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
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()
Obrigado pelo seu feedback!