Função em Python - O que é? Para que serve? Onde são usadas as funções ?

Para que servem funçãoNeste tutorial de Python, vamos iniciar nossos estudos em funções, que é de longe, um dos assuntos mais importantes em programação.

Inicialmente, vamos tentar te explicar de uma maneira bem simples e fácil o que é uma função em Python, para que serve, onde e como iremos usar elas durante nosso curso.

Vale lembrar que este tutorial segue uma ordem (veja nosso sumário do curso de Python). Você já deve ter estudado:

Vamos lá!



Função em Python - O que é ? 

Função nada mais é que um pedaço de código, um trecho com várias declarações e linhas de código, como já fizemos vááárias vezes aqui em nosso curso.

Porém, são trechos de códigos que tem um funcionamento diferente, eles são mais específicos e seu objetivo é desempenhar uma tarefa específica.

Não sei se estão percebendo, mas nossos código estão ficando cada vez mais longos, complexos, cheio de variáveis, testes, laços e tudo mais.

Um simples programa ou jogo, contém milhares de linhas de código.
Um sistema operacional, como Windows ou Linux, tem milhões. Isso mesmo, milhões de linha de código.

Imagina um arquivo com milhões de linhas de código? Imaginou?
Imaginação fértil você tem, então. Pois isso não existe.

Ia ficar muito grande, muito bagunçado, difícil de achar algo, se organizar.
E é aí que entra a função, para organizar isso, facilitar, deixar tudo mais fácil de se controlar.

Vamos te dar um exemplo real.

Empresa Python sem Função

Como você estudou pelo curso Python Progressivo, obteve seu certificado do curso e começou a trabalhar como programador, rapidamente ficou rico.


Então decidiu contratar 30 funcionários para sua empresa. Todo mundo igual e todo mundo vai fazer o mesmo.

Quem chegar primeiro na empresa, abre ela, quem vem chegando depois começa a limpar, varrer, outro faz o café...e assim vai, todo mundo fazendo tudo.

Você começa a fechar contrato com alguma empresa, mas tem que parar tudo pra ir fazer mais café (programador adora café). E perde o contrato que tava fechando, acontece.

Seu melhor programador está ocupado, teve que ir no banco pagar uns boletos da empresa.

Sua melhor designer estava fazendo um trabalho fantástico...fazendo entrevistas de novos funcionários.

Ou seja, todo mundo faz tudo, o que aparecer, sem regra, é todo mundo igual, todo mundo faz tudo, todo mundo para uma coisa, ajuda o outro, começa isso, dá uma pausa, faz aquilo...

Você acha que isso vai dar certo? Uma empresa com pessoas sem função nenhuma? Experimenta ai e me diz se deu certo.

Empresa Python com Função

Agora, após falir, voltar a ser empregado, você juntou dinheiro e decidiu tentar abrir uma empresa novamente. Mas agora, vai usar uma abordagem diferente, pois você estudou funções em Python.


Decidiu implantar um sistema com funções também, na sua empresa.

Primeiro, pegou um grupo de 5 pessoas. Colocou dois seguranças para se revezarem, e mais 3 para ficar limpando a empresa, fazendo café etc.

Pegou mais 2 pessoas para cuidar da tesouraria, eles recebem pagamento dos seus clientes, fazem transferência, vão no banco resolver assuntos financeiros, fazem pagamento dos clientes etc.

Definiu bem também a equipe de programadores, escolheu os melhores (que, obviamente, estudaram pelo Python Progressivo) e deixou eles focados apenas nisso.

O mesmo para sua equipe de design, mídia, áudio, vídeo etc.

Tem também a galera do RH, que contrata, faz entrevistas, cuida dos estagiários. E tem a parte burocrática, com advogados e contadores para abrir a empresa, calcular impostos, cuidar da parte trabalhista.

E aí, e agora, será que vai dar certo?
Com pessoas e grupos desempenhando funções específicas?

Eeeeeu acho que tem mais chances de funcionar assim! E você ?

Funções em Python - Para que servem ?

Simplificação do código

As funções deixam seu projeto mais simples e fáceis de se manter e entender. Tem que programar algo na sua empresa? Chama a equipe cuja função é programar.

Assunto financeiro? Chama a função tesouraria, eles resolvem tudo isso lá.
Quer contratar? A função RH vai entrevistar, depois passar pra tesouraria pagar o salário, depois a equipe de função administração vai definir onde essa pessoa vai trabalhar melhor.



Reuso de código

Quando você vai criar um novo projeto, você não precisa programar tudo do zero, tudo de novo. Sempre que um novo programa é criado em Python, boa parte do projeto já está pronto.

Por exemplo, já te ensinamos como calcular fatorial em Python. O que você deve fazer? Guardar esse código específico, como uma função, cuja função é calcular o fatorial de um número fornecido.

Se em um novo projeto que vai começar hoje, mês que vem ou daqui 10 anos você precisar calcular fatorial novamente, não precisa programar tudo de novo, você já tem a função fatorial pronta. Só usar novamente.

Desenvolvimento em blocos e equipe

Vamos supor que você e seus amigos decidiram criar um jogo.
Vocês podem, e devem, desenvolver tudo de maneira mais segmentada.

Um de você vai programar a parte de design, dos skins, das imagens dos personagens se mexendo. Cria várias funções, para cada coisa específica.

Outro, melhor em exatas, fica com a parte de fazer cálculos (calcular poder, destruição, defesa, acumular dinheiro, skills etc). Sempre tem muita matemática em um jogo. Crie funções específicas, só sobre isso.

Já outro vai trabalhar no banco de dados pra armazenar os dados do jogo, que fase você está, os recursos que você coletou etc, e cria funções que armazenam essas funções. Quando abre o jogo, ele vai buscar esses dados e carrega, pra começar de onde parou.

Uma outra pessoa fica responsável só pela parte de internet, pra se conectar, adicionar pessoas como amigos, jogar online, criar um chat. Cria funções específicas só com esse propósito.

E você? Você é o chefe do projeto...vai pegar os blocos de funções dos personagens, com as funções de design, mídia, integrar tudo usando as funções de banco de dados, fazer tudo isso rodar remotamente, através das códigos de funções de internet.

Entendeu? Cada um faz um trecho, uma parte, criando coisas bem específicas, códigos específicos, funções! E depois junta tudo.

Facilidade de testes e Encontrar erros

Fez a parte do jogo responsável pela internet? Testa só ela.
Só aquele bloco de código, que faz algo específico. Com funções bem limitadas e simples, fica fácil de testar.

Deu pau no som? Não precisa mexer no banco de dados, vai nas funções de som. A imagem travou? Não precisa mexer nas funções de internet, só ir direto no código de imagens.

Execução ilimitada de código

Você digita o código da função apenas uma vez e ele é executado quantos vezes você desejar. Basta "chamar" a função sempre que você quiser.

Sabe jogos de luta? Quando você dá um golpe e sai um som?
Então, tem uma função que detecta se você deu um soco, um chute ou soltou um poder. Dependendo do que fez, ele chama outra função que vai emitir o som.

Quantas vezes esse som vai ser emitido?
Ué, quantas vezes você der o golpe...pode dar 1..10...100...mil...cada vez que você aperta um botão, funções são executadas.

Mas aí que vem a beleza: esse código é escrito apenas uma vez.
E ele é executado quantas vezes você quiser.

Não precisa ficar repetindo o código várias e várias vezes nos programas. Faz só uma vez e executa aquele trecho sempre que for necessário, simples assim.

Funções - Onde são usadas ?

Qualquer código, script ou programa mais complexo em Python, pode e deve se utilizar de funções.

Como você verá nos códigos daqui em diante, em nosso curso de Python, iremos utilizar bastante funções.

Além de todas as vantagens que citamos acima, ela são muito importantes para receber dados, tratar essas informações (fazer alguma coisa específica com essas informações) e retornar valores.

É como se funções fossem uma caixinha mágica.
Você fornece algumas informações, como as notas de uma turma.
Lá dentro acontece uma mágica (código que calcula coisas, com a média).
E retornam valores (média da turma).

Você pode, inclusive, usar funções que foram desenvolvidas por outras pessoas.
Essas funções geralmente são documentadas, ou seja, alguém diz para que ela serve, que tipo de dados você deve fornecer ao chamar essas funções e o tipo de dado que ela retorna.

Ou seja, você pode trabalhar numa coisa. Seu amigo em outra, você usar funções que ele criou, ele usar funções que você programou, sem ao menos um ter olhado pro código do outro!

Tudo isso apenas sabendo o que cada função faz, depois é só usar ela!
Agora, vamos deixar de papo teórico e partir pro nosso próximo tutorial, onde vamos começar a usar, de fato, as danadas das funções!

Nenhum comentário:

Postar um comentário