Como verificar se uma string está vazia em Python
Neste artigo você vai aprender a como verificar se uma string está vazia em Python, utilizando recursos da linguagem e de forma simples
Resposta rápida: a forma recomendada de verificar se uma string está vazia em Python é usar a falsidade dela, com if not nome:
nome = ""
if not nome: print("A variável nome não tem valor algum")
Funciona porque a string vazia tem comprimento zero e, pela documentação, um objeto com __len__() retornando zero é avaliado como falso
Também dá pra comparar direto com if nome == "": e o resultado é o mesmo nesse caso
Já o PEP 8 recomenda testar sequências vazias pela falsidade e marca if len(seq): e if not len(seq): como formas erradas
E atenção: string com espaços (" ") não é vazia, pra esse caso use if not nome.strip():

Conteúdo também disponível em vídeo:
Fala programador, beleza? Bora aprender mais sobre strings e Python!
Podemos utilizar uma checagem if para resolver este problema e em conjunto do operador not
E então verificar a string alvo, teremos como retorno um booleano
Se a string tiver algum dado será retornado True, caso não teremos um False
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Veja um exemplo prático:
nome = ""
if not nome:
print("A variável nome não tem valor algum")
Neste caso teremos a mensagem do if sendo exibida, pois a variável nome não possui valor
Então a string está vazia, e este código resolve o nosso problema completamente
Outra abordagem que podemos ter é verificar se o valor está vazio com o operador de comparação
Utilizando os dois iguais, que também teremos a mesma resposta
Veja um exemplo prático:
nome = ""
if nome == "":
print("A variável nome não tem valor algum")
Teremos o mesmo resultado da outra opção, então você pode escolher qual usar no seu programa
Conclusão
Neste artigo aprendemos a como verificar se uma string está vazia em Python
Utilizamos duas abordagens, uma com if not, que nos retorna um booleano se a string tem algum valor
E a outra comparando com uma string vazia, que também retorna um booleano
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
O que o PEP 8 recomenda?
Os dois jeitos que vimos acima funcionam, mas o guia de estilo oficial do Python tem uma preferência clara
O PEP 8 diz que, para sequências (strings, listas, tuplas), você deve usar o fato de que sequências vazias são falsas
Ou seja: o if not nome: é o jeito idiomático, o que a comunidade espera ler no teu código
E ele vai além: marca if len(seq): e if not len(seq): como formas erradas de escrever essa checagem
Se liga que isso é estilo, não é erro de sintaxe: o len(nome) == 0 roda numa boa, só não é o caminho recomendado
Por que a string vazia é falsa?
Não é mágica, é regra da linguagem
A documentação diz que todo objeto é considerado verdadeiro por padrão, a menos que a classe dele defina __bool__() retornando False ou __len__() retornando zero
A string vazia tem comprimento zero, então cai no segundo caso e vira falsa dentro do if
Sacou? O not só inverte esse falso pra true e entra no bloco 😀
E se a string tiver só espaços?
Esse é o caso que pega muita gente 🙂
Uma string com " " dentro NÃO está vazia, ela tem conteúdo (espaço também é caractere)
Então o if not nome: simplesmente não entra no if
A saída aqui é limpar as pontas antes de testar, com o strip()
nome = " "
if not nome.strip(): print("A variável nome não tem valor algum")
O strip() sem argumento devolve uma cópia da string com os espaços do início e do fim removidos (o exemplo da própria documentação é ‘ spacious ‘.strip() virando ‘spacious’)
Sobrou nada depois da limpeza? Então só tinha espaço ali, e o not entra no if
Tem ainda o isspace(), que responde uma pergunta parecida, mas não igual:
print(" ".isspace()) print("".isspace())
Tome cuidado! O isspace() retorna True só quando a string contém apenas caracteres de espaço E não é vazia
Pra string vazia ele devolve False, ou seja, sozinho ele não serve pra detectar string vazia
Use os dois juntinhos e tu cobre os dois cenários: vazia de verdade e vazia "de mentirinha"
Isso muda com a versão do Python?
Os exemplos daqui não mudam: a regra de que a string vazia é falsa em contexto booleano está na documentação da versão atual da linguagem
Só pra tu se situar no calendário: a série de recursos atual é a 3.14, lançada em 7 de outubro de 2025, e a versão estável mais recente é a 3.14.7, publicada em 5 de agosto de 2026 junto com a 3.13.15
A 3.15 ainda não é final, está em release candidate: a 3.15.0rc1 saiu em 4 de agosto de 2026, e o cronograma dela está definido no PEP 790, com ciclo de desenvolvimento de 17 meses e cadência anual entre versões de recursos
E se tu roda uma série mais antiga, tranquilo: em 12 de agosto de 2026 ainda saíram as manutenções 3.12.14, 3.11.16 e 3.10.21
Por falar em novidade de string, a 3.14 trouxe os template string literals (as t-strings), além da avaliação adiada de anotações e do suporte a subinterpretadores na biblioteca padrão
Eu gravei esse teste em vídeo enquanto escrevia o post, e o detalhe que mais confunde quem está começando apareceu na hora de rodar
Criei uma pastinha, um arquivo app.py e comecei com nome = "Matheus", já com o if not nome: e um print dentro
Rodei o python app.py e não imprimiu nada
Parece que deu errado, né? Não deu, é justamente o esperado: com conteúdo na variável a string é verdadeira, o not vira falso e o if não entra
Aí eu apaguei o conteúdo do nome, deixei a string vazia, rodei de novo e a mensagem apareceu
Depois repeti a mesma brincadeira com o if nome == "": e o comportamento foi igualzinho: com valor na variável, nenhum dos dois ifs executa
Dica de bastidor: quando o teu programa "não imprime nada", roda ele nas duas situações (com valor e sem valor) antes de sair caçando erro no código, na maioria das vezes ele está certo e o teste é que estava incompleto 😀
Perguntas frequentes
Como verificar se uma string está vazia em Python?
Use if not nome:
A string vazia é avaliada como falsa, então o not inverte e o bloco do if executa
Se a string tiver qualquer conteúdo, o if não entra
Qual é a forma recomendada pelo PEP 8?
O PEP 8 diz que, para sequências (strings, listas, tuplas), você deve usar o fato de que sequências vazias são falsas
Então if not seq: e if seq: são as formas corretas de acordo com o guia de estilo
Posso usar len(nome) == 0 pra checar string vazia?
Funciona, mas o PEP 8 marca if len(seq): e if not len(seq): como errado do ponto de vista de estilo
O caminho idiomático é o if not nome:
E se a string tiver só espaços em branco?
Ela não está vazia, porque espaço também é caractere
Limpe as pontas antes de testar: if not nome.strip():
O strip() sem argumento remove os espaços do início e do fim da string
O isspace() serve pra detectar string vazia?
Não sozinho
O str.isspace() retorna True apenas se a string contiver só caracteres de espaço E não for vazia
Pra string vazia ele devolve False, então ele serve pro caso "só espaços", não pro caso "nada dentro"
if not nome e nome == "" dão o mesmo resultado?
Pra uma string vazia, sim: os dois entram no if
A diferença é de estilo, e o PEP 8 puxa pro lado da falsidade, ou seja, o if not nome:
Leia também
Formações
Formação SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
