Pular para o conteúdo

Como usar o null no Python?

[

Null em Python: Entendendo o Objeto NoneType do Python

Se você tem experiência com outras linguagens de programação, como C ou Java, provavelmente já ouviu falar do conceito de null. Muitas linguagens usam isso para representar um ponteiro que não aponta para nada, para denotar quando uma variável está vazia ou para marcar parâmetros padrão que ainda não foram fornecidos. null é frequentemente definido como 0 nessas linguagens, mas o null em Python é diferente.

O Python usa a palavra-chave None para definir objetos e variáveis nulas. Embora None sirva para alguns dos mesmos propósitos que o null em outras linguagens, ele é totalmente diferente. Como o null em Python, None não é definido como 0 ou qualquer outro valor. No Python, None é um objeto e um cidadão de primeira classe!

Entendendo Null em Python

None é o valor que uma função retorna quando não há uma instrução return na função:

def sem_retorno():
pass
sem_retorno()
print(sem_retorno())

Quando você chama sem_retorno(), não há nenhuma saída para você ver. No entanto, ao imprimir uma chamada a essa função, você verá o None oculto que ela retorna.

Na verdade, o None é tão frequente como um valor de retorno que o REPL do Python não imprime None a menos que você o informe explicitamente:

None
print(None)

O None por si só não possui saída, mas imprimindo-o você verá None no console.

Curiosamente, a função print() em si não tem um valor de retorno. Se você tentar imprimir uma chamada para print(), você verá None:

print(print("Olá, mundo!"))

Pode parecer estranho, mas print(print("...")) mostra o None que a função print() interna retorna.

None também é frequentemente usado como um sinal para parâmetros ausentes ou padrão. Por exemplo, None aparece duas vezes na documentação de list.sort:

help(list.sort)

Aqui, None é o valor padrão para o parâmetro key bem como uma dica de tipo para o valor de retorno.

Usando o Objeto Nulo None do Python

Com frequência, você usará None para inicializar uma variável que pode estar vazia ou para representar a ausência de um valor específico. Por exemplo:

my_variable = None

Neste caso, my_variable é uma variável que não possui um valor atribuído, ou seja, ela é nula.

Uma utilidade importante do None é usá-lo como um parâmetro padrão em uma função. Por exemplo:

def saudacao(nome=None):
if nome is None:
nome = 'amigo'
print(f"Olá, {nome}!")
saudacao()
saudacao('João')

Nesta função, se nenhum argumento for fornecido, o parâmetro nome será None por padrão, e a saudação será impressa para um “amigo”. Caso um nome seja fornecido, a saudação será impressa para o nome especificado.

Outra maneira de usar None é verificar se uma variável ou objeto é nulo. Por exemplo:

my_variable = None
if my_variable is None:
print("A variável é nula.")
else:
print("A variável não é nula.")

Neste caso, se my_variable for None, a mensagem “A variável é nula” será impressa. Caso contrário, a mensagem “A variável não é nula” será impressa.

Declarando Variáveis Nulas em Python

Além de atribuir None a uma variável, você também pode declará-la como nula sem atribuir um valor inicial. Por exemplo:

my_variable: int

Neste caso, my_variable é declarada como uma variável de tipo int, mas não recebeu um valor inicial. Portanto, ela é considerada nula.

Usando None como um Parâmetro Padrão

Como mencionado anteriormente, uma das principais utilidades do None é usá-lo como um valor de parâmetro padrão em uma função. Isso permite que você defina um valor padrão para o parâmetro, caso nenhum valor seja fornecido quando a função é chamada. Por exemplo:

def saudacao(nome=None):
if nome is None:
nome = 'amigo'
print(f"Olá, {nome}!")
saudacao()
saudacao('João')

Neste exemplo, nome é um parâmetro opcional na função saudacao(). Se nenhum valor for fornecido, None será atribuído a nome e a saudação será exibida para um “amigo”. Caso um nome seja fornecido, a saudação será exibida para o nome especificado.

Usando None como um Valor Nulo em Python

Além de ser usado como um parâmetro padrão, você também pode usar None como um valor nulo em Python. Isso significa que você pode atribuir None a uma variável ou objeto para representar a ausência de um valor específico. Por exemplo:

my_variable = None
if my_variable is None:
print("A variável é nula.")
else:
print("A variável não é nula.")

Neste caso, se my_variable for None, a mensagem “A variável é nula” será impressa. Caso contrário, a mensagem “A variável não é nula” será impressa.

Decifrando o None em Tracebacks

Ao depurar um código Python, você pode se deparar com um traceback que menciona None. Isso geralmente indica que uma variável ou objeto é None e está gerando o erro. Por exemplo:

def divide(a, b):
return a / b
resultado = divide(10, 0)

Neste exemplo, a função divide() está tentando dividir 10 por 0, o que é impossível. Isso resultará em um erro ZeroDivisionError e o traceback indicará que o erro ocorreu em uma linha que envolve None, que é o valor de retorno da função.

Verificando o Null em Python

Para verificar se uma variável é nula ou não em Python, você pode usar a palavra-chave is. Por exemplo:

my_variable = None
if my_variable is None:
print("A variável é nula.")
else:
print("A variável não é nula.")

Neste caso, se my_variable for None, a mensagem “A variável é nula” será impressa. Caso contrário, a mensagem “A variável não é nula” será impressa.

Dando Uma Olhada Sob o Capô

Internamente, o Python implementa o None como um objeto de classe NoneType. Isso significa que você pode verificar o tipo de uma variável usando type() e descobrir se ela é None. Por exemplo:

my_variable = None
if type(my_variable) == type(None):
print("A variável é nula.")
else:
print("A variável não é nula.")

Conclusão

Neste tutorial, você aprendeu sobre o None em Python e como usá-lo. Agora você sabe que o None é o valor que uma função retorna quando não há uma instrução return, e que você pode usá-lo como um valor nulo ou como um parâmetro padrão em uma função. Além disso, você viu como verificar se uma variável é nula em Python e como o None funciona internamente como um objeto da classe NoneType. Usar corretamente o None em Python pode ajudá-lo a escrever um código mais limpo e evitar erros relacionados a valores nulos.