Introdução
Neste laboratório, você aprenderá como verificar se uma variável é None em Python. O laboratório começa explicando o valor None, uma constante especial que representa a ausência de um valor. Você criará scripts Python para entender como None é retornado por funções quando nenhum valor está presente, como atribuir None a variáveis e como usar None como um argumento padrão em funções.
O laboratório então o guia através do uso do operador is para verificar especificamente por None, diferenciando-o de outros valores falsos (falsy values) como 0, False e strings vazias. Isso garante que você possa identificar com precisão quando uma variável realmente contém o valor None em seu código Python.
Entenda o Valor None
Nesta etapa, você aprenderá sobre o valor None em Python. None é uma constante especial em Python que representa a ausência de um valor ou um valor nulo. Ele é frequentemente usado para indicar que uma variável não recebeu um valor ou que uma função não retorna um valor.
Vamos começar criando um arquivo Python chamado none_example.py em seu diretório ~/project usando o editor VS Code.
## ~/project/none_example.py
def greet(name):
if name:
return "Hello, " + name
else:
return None
result = greet("Alice")
print(result)
result = greet("")
print(result)
Neste código:
- Definimos uma função
greetque recebe umnamecomo entrada. - Se
namenão estiver vazio, a função retorna uma string de saudação. - Se
nameestiver vazio, a função retornaNone. - Chamamos a função
greetcom "Alice" e uma string vazia "" e imprimimos os resultados.
Agora, execute o script Python:
python ~/project/none_example.py
Você deve ver a seguinte saída:
Hello, Alice
None
Como você pode ver, quando chamamos greet com "Alice", ela retorna "Hello, Alice". Quando a chamamos com uma string vazia, ela retorna None, que é então impresso no console.
None não é o mesmo que 0, False ou uma string vazia. É um valor distinto que representa a ausência de um valor.
Você pode atribuir None a uma variável:
## ~/project/none_example2.py
x = None
print(x)
Execute o script:
python ~/project/none_example2.py
Saída:
None
Você também pode usar None como um valor de argumento padrão em uma função:
## ~/project/none_example3.py
def my_function(arg=None):
if arg is None:
print("No argument was passed.")
else:
print("Argument:", arg)
my_function()
my_function("Hello")
Execute o script:
python ~/project/none_example3.py
Saída:
No argument was passed.
Argument: Hello
Neste exemplo, se nenhum argumento for fornecido ao chamar my_function, arg terá None como padrão.
Use o Operador 'is' para Verificar None
Nesta etapa, você aprenderá como usar o operador is para verificar se uma variável é None. Em Python, o operador is é usado para testar se duas variáveis se referem ao mesmo objeto na memória. Isso é diferente do operador ==, que verifica se duas variáveis têm o mesmo valor. Ao lidar com None, é uma boa prática usar o operador is porque None é um objeto singleton, o que significa que existe apenas uma instância de None na memória.
Vamos criar um arquivo Python chamado is_none_example.py em seu diretório ~/project usando o editor VS Code.
## ~/project/is_none_example.py
def check_none(value):
if value is None:
print("The value is None")
else:
print("The value is not None")
x = None
check_none(x)
y = "Hello"
check_none(y)
Neste código:
- Definimos uma função
check_noneque recebe umvaluecomo entrada. - Usamos o operador
ispara verificar sevalueéNone. - Se
valueéNone, imprimimos "The value is None". - Caso contrário, imprimimos "The value is not None".
- Chamamos a função
check_nonecomNonee "Hello" para demonstrar a diferença.
Agora, execute o script Python:
python ~/project/is_none_example.py
Você deve ver a seguinte saída:
The value is None
The value is not None
Como você pode ver, o operador is identifica corretamente quando uma variável é None.
É importante usar is None em vez de == None ao verificar None. Embora == None possa funcionar em alguns casos, não é garantido que funcione em todas as situações, especialmente ao lidar com objetos personalizados que substituem o operador ==. Usar is None é a maneira recomendada e mais confiável de verificar None.
Aqui está outro exemplo para ilustrar isso:
## ~/project/is_none_example2.py
class MyClass:
def __eq__(self, other):
return True ## Always return True for equality
obj = MyClass()
print(obj == None) ## Might return True due to the overridden __eq__ method
print(obj is None) ## Always returns False because obj is not None
Execute o script:
python ~/project/is_none_example2.py
Saída:
True
False
Este exemplo mostra que usar == None pode levar a resultados inesperados se o método __eq__ do objeto for substituído. A verificação is None, no entanto, sempre identifica corretamente se o objeto é realmente None.
Diferencie None de Outros Valores Falsos
Nesta etapa, você aprenderá a diferenciar None de outros valores falsos em Python. Em Python, vários valores são considerados "falsos" (falsy), o que significa que eles são avaliados como False em um contexto booleano. Isso inclui False, 0, 0.0, strings vazias (""), listas vazias ([]), tuplas vazias (()), dicionários vazios ({}) e None.
É importante entender que, embora None seja falso, ele não é o mesmo que esses outros valores. Usar o operador is é crucial ao verificar especificamente None, pois ele distingue None de outros valores falsos.
Vamos criar um arquivo Python chamado falsy_values.py em seu diretório ~/project usando o editor VS Code.
## ~/project/falsy_values.py
def check_falsy(value):
if value:
print(f"{value!r} is considered True")
else:
print(f"{value!r} is considered False")
check_falsy(None)
check_falsy(False)
check_falsy(0)
check_falsy("")
check_falsy([])
print("\nChecking with 'is None':")
def check_none(value):
if value is None:
print(f"{value!r} is None")
else:
print(f"{value!r} is not None")
check_none(None)
check_none(False)
check_none(0)
check_none("")
check_none([])
Neste código:
- Definimos uma função
check_falsyque recebe umvaluecomo entrada e verifica sua veracidade em um contexto booleano. - Em seguida, definimos uma função
check_noneque usa o operadoris Nonepara verificar especificamente se o valor éNone. - Chamamos ambas as funções com
None,False,0,""e[]para demonstrar as diferenças.
Agora, execute o script Python:
python ~/project/falsy_values.py
Você deve ver a seguinte saída:
None is considered False
False is considered False
0 is considered False
'' is considered False
[] is considered False
Checking with 'is None':
None is None
False is not None
0 is not None
'' is not None
[] is not None
Esta saída mostra claramente que, embora todos os valores sejam considerados falsos em um contexto booleano, apenas None é identificado como None ao usar o operador is None.
Usar is None garante que você esteja verificando especificamente a ausência de um valor, em vez de apenas qualquer valor que seja avaliado como False. Essa distinção é importante para escrever código Python robusto e preciso.
Resumo
Neste laboratório, você aprendeu sobre o valor None em Python, que representa a ausência de um valor. Você viu como uma função pode retornar None quando um valor não está disponível e como atribuir None a uma variável.
Além disso, você explorou o uso de None como um valor de argumento padrão em uma função, permitindo que a função se comporte de maneira diferente quando nenhum argumento é fornecido. O laboratório demonstrou esses conceitos por meio de exemplos práticos e trechos de código.



