Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Funções e return implicito

Na parte de funções poderia ser adicionado um esclarecimento, que no python temos o retorno None do tipo NoneType, em c# é null e em javascript é undefined por exemplo, e que as funções sem return, sempre retornarão None, print() não precisa retornar nada, diferente de len() ou input() que precisam retornar algo, mas internamente ela faz um return None.
E se, você criar um função, com a palavra chave return sem nenhum valor atribuido vai retornar None também, isto porque toda função deve ser avaliada com um valor de retorno, então debaixo do pano, mesmo que não tenha a palavra chave return ou ela esteja sozinha, o python sempre vai fazer um return None.

No vídeo foi dito que é por causa da função print(), mas não necessariamente é dessa forma o retorno None.

1 resposta
solução!

Olá, Marcelo! Tudo bem?

Excelente observação técnica! Você trouxe um ponto fundamental sobre o funcionamento interno do Python que ajuda muito a desmistificar o que acontece "debaixo do pano".

Sua explicação sobre o comportamento do None é muito precisa e enriquece o entendimento sobre a anatomia das funções:

Pontos-chave da sua contribuição:

  • Retorno Implícito: Em Python, toda função deve ser avaliada com um valor de retorno. Se a palavra-chave return for omitida ou usada sem um valor atribuído, o Python executará internamente um return None.
  • Tipo de Dado: O None pertence ao tipo NoneType, funcionando de forma análoga ao null no C# ou ao undefined no JavaScript.
  • Funções de Efeito Colateral vs. Retorno: Você diferenciou muito bem funções como print(), cujo objetivo principal é um efeito colateral (exibir dados), de funções como len() ou input(), que são desenhadas especificamente para devolver um valor útil ao sistema.
  • Correção Conceitual: Você esclareceu que o retorno None não é "causado" pela função print(), mas sim uma característica intrínseca de como o interpretador Python lida com qualquer função que não especifica um valor de saída.

Por que isso é importante no dia a dia?

Entender o NoneType evita erros comuns, como tentar atribuir o resultado de um print() a uma variável e depois tentar realizar operações com ela, o que geraria um erro de tipo.

Exemplo Prático:

def minha_funcao():
    pass  # Sem return explícito

resultado = minha_funcao()
print(type(resultado))  # Saída: <class 'NoneType'>

Agradeço muito por compartilhar esse conhecimento com a comunidade! Feedbacks detalhados como o seu ajudam a elevar o nível técnico das discussões nos fóruns.

Espero que possa ter lhe ajudado!