HOWTO · Python
Python NULL
Este tutorial discute NULL em Python
Nesta página
Python não tem uma palavra-chave NULL. Seu valor semelhante a nulo é o singleton integrado None, que costuma indicar um valor opcional ou uma referência a objeto ainda não definida. Use value is None para verificá-lo. None é um valor cujo tipo é NoneType; não é o zero numérico, e o código Python não atribui ponteiros no estilo C. Outras linguagens dão significados próprios a NULL, portanto não presuma que esse valor se comporte da mesma forma em todas elas.
Verificar se um valor Python é None
Use o operador de identidade is para a verificação habitual. Ele pergunta se os dois lados se referem ao mesmo objeto, por isso value is None é a forma clara de reconhecer o singleton do Python. O guia para verificar se uma variável Python é None aborda a mesma tarefa.
Execute este exemplo independente:
values = [None, "ready"]
for value in values:
if value is None:
print("value is None")
else:
print("value is set")
value is None
value is set
A verificação com is distingue o valor None da string, e os dois ramos permitem adaptar o mesmo padrão a um argumento de função, ao resultado de uma busca ou a um campo opcional. Substitua os valores de exemplo pela variável que seu programa precisa verificar.
Em geral, value == None não é a forma recomendada. A igualdade pode ser personalizada pela classe de um objeto, portanto talvez não signifique “este valor é o singleton None”. Use igualdade para comparar valores comuns de acordo com seu conteúdo; use identidade para verificar None. Essa distinção também evita tratar outros valores considerados falsos, como 0, False ou "", como se fossem None.
Verificar o tipo de None em Python
Para inspecionar o tipo associado ao valor None, passe-o à função integrada type() do Python. A classe retornada se chama NoneType. None é o valor singleton; NoneType é seu tipo. No código comum, uma verificação de identidade é mais clara do que verificar o tipo, mas type() pode ser útil para explorar objetos Python ou ler informações de diagnóstico.
Este exemplo curto imprime o nome da classe, em vez da representação completa da classe no Python:
value = None
print(type(value).__name__)
NoneType
Para esse valor integrado, o nome é NoneType. Não descreva o próprio None como um tipo de dado: ele é um objeto desse tipo. Evite também usar type(value) is type(None) no lugar da verificação direta value is None; esta última expressa a pergunta com mais clareza.
Representar uma referência a objeto ausente com None em Python
As variáveis Python referem-se a objetos, mas o código Python não expõe ponteiros atribuíveis no estilo C. Um uso comum de None é representar uma referência opcional ainda não definida, como o filho de um nó antes que outro nó seja associado a ele. Essa é uma convenção de modelagem: o programa ao redor determina o que None significa para esse atributo.
O exemplo a seguir define um nó com duas referências opcionais a filhos e verifica se o filho à esquerda está ausente:
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
root = Node("root")
print(root.left is None)
True
Cada nó novo começa com left e right definidos como None; mais tarde, o código pode atribuir outro Node a qualquer um desses atributos. A expressão final verifica se o filho à esquerda continua ausente. Este exemplo ilustra referências a objetos em Python, não um ponteiro que possa ser desreferenciado nem receber um endereço NULL, como em C. None é um valor comum no nível dos objetos Python, usado por convenção para indicar ausência; antes de usar uma referência opcional, o código deve verificar explicitamente esse valor.