< Return to Video

vimeo.com/.../1064653172

  • 0:08 - 0:10
    Quando a gente está implementando
    alguma coisa nova,
  • 0:10 - 0:13
    a gente nunca constrói
    tudo do zero.
  • 0:13 - 0:15
    Então, nessa brincadeira
    de reaproveitar
  • 0:15 - 0:15
    o que já está feito,
  • 0:15 - 0:20
    a gente começa a conversar sobre
    função nativa para cá e para lá,
  • 0:20 - 0:22
    e agora finalmente chegou
    o momento da gente entender
  • 0:22 - 0:24
    o que são funções,
    para que servem
  • 0:24 - 0:25
    e construir a nossa primeira.
  • 0:25 - 0:27
    Como a gente já comentou,
  • 0:27 - 0:30
    a gente consegue reaproveitar
    bastante coisa no desenvolvimento
  • 0:30 - 0:32
    e tem vários motivos
    para fazer isso.
  • 0:32 - 0:33
    Se a gente quisesse,
  • 0:33 - 0:35
    a gente até poderia fazer
    isso tudo do zero,
  • 0:35 - 0:38
    mas tem alguns problemas
    nessa abordagem.
  • 0:38 - 0:40
    Imagina que dentro
    da sua aplicação,
  • 0:40 - 0:42
    você tem que exibir uma mensagem
    para algum usuário.
  • 0:42 - 0:43
    Dentro dessa mensagem,
  • 0:43 - 0:46
    você provavelmente
    vai ter o nome do usuário
  • 0:46 - 0:49
    e alguns elementos extras,
    como um prefixo ou sufixo,
  • 0:49 - 0:51
    alguma coisa desse tipo.
  • 0:51 - 0:54
    Pronto, esse seu código
    vai funcionar
  • 0:54 - 0:57
    mas felizmente ou, infelizmente,
    mais para frente no seu código,
  • 0:57 - 1:00
    você vai ter que repetir
    aquele mesmo comportamento.
  • 1:00 - 1:02
    E conforme sua aplicação
    for crescendo,
  • 1:02 - 1:05
    provavelmente em outros lugares
    você vai ter que fazer isso também.
  • 1:05 - 1:08
    E não só nesse arquivo,
    mas em vários outros arquivos.
  • 1:08 - 1:11
    E agora você já está começando
    a enxergar qual que é o problema.
  • 1:11 - 1:15
    Não só a gente não está conseguindo
    reaproveitar aquele código,
  • 1:15 - 1:18
    porque ele está espalhado
    no meio da nossa aplicação,
  • 1:18 - 1:20
    como se a gente precisar
    trocar aquele comportamento
  • 1:20 - 1:23
    para adicionar ou remover
    alguma característica,
  • 1:23 - 1:24
    isso vai ser muito complicado,
  • 1:24 - 1:27
    porque a gente vai ter que depender
    de ferramentas de busca
  • 1:27 - 1:29
    para procurar algum
    trecho de código
  • 1:29 - 1:31
    e então alterá-lo
    em todos os lugares.
  • 1:31 - 1:34
    É muito fácil a gente acabar
    esquecendo um ou dois lugares
  • 1:34 - 1:37
    e, com isso, injetar
    bugs no nosso programa.
  • 1:37 - 1:40
    Para resolver esse problema,
    a gente tem as funções,
  • 1:40 - 1:43
    que é a porta de entrada
    para o tema de abstração.
  • 1:43 - 1:47
    Com elas, a gente consegue criar blocos
    de código parametrizáveis
  • 1:47 - 1:51
    e executar uma lógica específica
    quantas vezes a gente quiser.
  • 1:51 - 1:53
    Funções existem basicamente
    todas as linguagens,
  • 1:53 - 1:55
    de uma forma ou de outra.
  • 1:55 - 1:59
    E a característica principal
    delas é isolar bloco de código
  • 1:59 - 2:00
    para reaproveitamento.
  • 2:00 - 2:04
    Sendo assim, a gente consegue
    implementar o que a gente quiser
  • 2:04 - 2:06
    e dar manutenção
    em um só lugar do nosso código.
  • 2:06 - 2:08
    Se a gente precisar alterar
    um comportamento,
  • 2:08 - 2:10
    basta alterar dentro
    daquela função
  • 2:10 - 2:12
    e aonde ela estiver
    sendo referenciada,
  • 2:12 - 2:14
    o comportamento
    vai ser atualizado também.
  • 2:14 - 2:15
    Legal.
  • 2:15 - 2:17
    Agora que você entendeu a motivação
    e, mais ou menos,
  • 2:17 - 2:20
    a ideia por trás das funções,
    vamos ver, na prática,
  • 2:20 - 2:22
    como que isso funciona no Python.
  • 2:22 - 2:23
    Então, vamos lá para o código.
  • 2:23 - 2:26
    Aqui no VS Code, eu já tenho
    o meu arquivo main.py criado.
  • 2:26 - 2:28
    Então, vamos começar
    definindo a nossa função.
  • 2:28 - 2:31
    E, para isso, eu vou usar
    a palavra reservada def.
  • 2:31 - 2:33
    Cada linguagem de programação
    tem a sua forma de fazer
  • 2:33 - 2:35
    e é assim que a gente faz no Python.
  • 2:35 - 2:38
    Eu vou começar, então, aqui colocando
    o nome da minha função,
  • 2:38 - 2:40
    que vai ser exatamente
    minha_funcao.
  • 2:40 - 2:42
    A gente pode mudar isso
    no futuro sem problema nenhum.
  • 2:42 - 2:45
    E, para que o Python entenda,
    de fato, que isso é uma função,
  • 2:45 - 2:48
    eu vou colocar aqui
    os parênteses e os dois pontos.
  • 2:48 - 2:48
    Pronto.
  • 2:48 - 2:49
    A partir de agora,
  • 2:49 - 2:52
    eu estou livre para desenvolver
    o corpo da minha função.
  • 2:52 - 2:54
    Ou seja, o que eu quero
    que seja executado
  • 2:54 - 2:56
    quando essa função for invocada.
  • 2:56 - 2:59
    No nosso exemplo, a gente vai
    colocar apenas um print,
  • 2:59 - 3:02
    escrevendo alguma mensagem
    simples, como, por exemplo,
  • 3:02 - 3:06
    "Olá, Aluno",
    e salvar o arquivo.
  • 3:06 - 3:09
    Nesse momento, a gente já pode
    executar a nossa aplicação
  • 3:09 - 3:12
    usando o python.exe
    e o nome do arquivo.
  • 3:12 - 3:13
    Veja só.
  • 3:13 - 3:17
    Aqui no terminal,
    eu vou escrever "python.exe .\",
  • 3:17 - 3:19
    e o nome do meu arquivo.
  • 3:19 - 3:21
    .\main.py.
  • 3:21 - 3:23
    E se eu der um enter,
  • 3:23 - 3:25
    repara que a aplicação
    até executou,
  • 3:25 - 3:28
    mas não aconteceu nada
    de muito interessante.
  • 3:28 - 3:30
    Isso foi, basicamente,
    porque eu declarei a minha função,
  • 3:30 - 3:33
    mas eu não invoquei
    ela em lugar algum.
  • 3:33 - 3:36
    Lembra, funções são
    blocos de abstração.
  • 3:36 - 3:38
    Eu consigo escrever
    código lá dentro,
  • 3:38 - 3:40
    mas ele só é executado,
    de fato,
  • 3:40 - 3:42
    quando eu invoco
    essa função.
  • 3:42 - 3:44
    Então, vamos lá,
    aqui no nosso código.
  • 3:44 - 3:46
    E aqui embaixo, eu vou
    invocar essa função.
  • 3:46 - 3:47
    Para fazer isso,
  • 3:47 - 3:50
    basta eu executar
    o nome dessa função
  • 3:50 - 3:51
    e colocar aqui os parênteses.
  • 3:51 - 3:53
    Dessa forma, eu estou
    pedindo para o python
  • 3:53 - 3:56
    para que ele pegue e execute
    aquele bloco de código.
  • 3:56 - 3:59
    Se eu rodar novamente
    o meu programa, dessa vez sim,
  • 3:59 - 4:02
    a gente tem a mensagem
    "olá, alunos", sendo exibida.
  • 4:02 - 4:05
    E bacana, a nossa função
    está funcionando,
  • 4:05 - 4:07
    mas ela ainda não tem
    muita funcionalidade
  • 4:07 - 4:08
    na nossa aplicação.
  • 4:08 - 4:11
    Porque uma das
    características de funções
  • 4:11 - 4:14
    é ter a capacidade
    de ser parametrizada.
  • 4:14 - 4:17
    Ou seja, a gente deve,
    dependendo do cenário,
  • 4:17 - 4:19
    conseguir manipular
    o comportamento dela
  • 4:19 - 4:21
    baseado em informações externas.
  • 4:21 - 4:24
    E isso a gente faz justamente através
    de parâmetros.
  • 4:24 - 4:27
    No Python, a gente consegue definir
    uma lista de parâmetros
  • 4:27 - 4:29
    que essa função recebe,
  • 4:29 - 4:31
    semelhante à própria
    funcionativa print.
  • 4:31 - 4:32
    Se a gente quiser
    executar ela,
  • 4:32 - 4:34
    a gente tem que mandar
    um string, ou seja,
  • 4:34 - 4:37
    um texto que vai ser
    exibido no terminal.
  • 4:37 - 4:41
    É assim que a gente controla
    o comportamento da função print,
  • 4:41 - 4:44
    parametrizando para ela a mensagem
    que a gente quer que seja exibida.
  • 4:44 - 4:48
    No nosso caso, o que a gente
    vai fazer é adicionar um parâmetro
  • 4:48 - 4:50
    para que a gente informe
    o nome que a gente
  • 4:50 - 4:52
    quer que esteja
    dentro da mensagem.
  • 4:52 - 4:52
    Entendeu?
  • 4:52 - 4:53
    Então, vamos lá.
  • 4:53 - 4:56
    Aqui no nosso código, então,
    eu vou começar entre os parênteses,
  • 4:56 - 4:59
    colocando o meu parâmetro,
    que eu vou chamar de nome.
  • 4:59 - 5:02
    E no Python, a gente
    tem a tipagem dinâmica.
  • 5:02 - 5:05
    Isso significa que eu posso
    deixar o meu código dessa forma,
  • 5:05 - 5:09
    e em tempo de execução, o Python
    vai saber o tipo dessa variável.
  • 5:09 - 5:12
    Mas caso eu queira deixar
    mais claro para algum desenvolvedor
  • 5:12 - 5:15
    que pegar o nosso código,
    eu posso colocar aqui do lado,
  • 5:15 - 5:18
    na frente dos dois pontos,
    o tipo str.
  • 5:18 - 5:22
    Lembra, isso não vai mudar
    na prática nada dentro da linguagem,
  • 5:22 - 5:24
    mas vai fazer com que alguém
    que pegue meu código
  • 5:24 - 5:27
    entenda que eu estou esperando
    que ele mande um string.
  • 5:27 - 5:30
    Se ele mandar um número, o Python
    não vai reclamar nesse momento.
  • 5:30 - 5:33
    Mas eu estou informando para ele
    que o comportamento esperado
  • 5:33 - 5:34
    é que ele mande um texto.
  • 5:34 - 5:36
    Tá bom? Então vamos lá.
  • 5:36 - 5:39
    Agora que dentro do contexto
    da minha função eu tenho essa variável,
  • 5:39 - 5:40
    eu posso usar ela.
  • 5:40 - 5:43
    Então eu vou basicamente
    copiar ela aqui
  • 5:43 - 5:45
    e remover a palavra aluno
    da minha mensagem,
  • 5:45 - 5:48
    porque agora eu vou fazer
    uma concatenação simples.
  • 5:48 - 5:51
    E para isso, eu vou colocar
    aqui na frente do sinal de mais
  • 5:51 - 5:52
    a variável nome.
  • 5:52 - 5:54
    E vamos ver o que acontece
    se eu executar o meu código
  • 5:54 - 5:56
    do jeito que ele está.
  • 5:56 - 5:56
    Pronto.
  • 5:56 - 6:00
    A gente agora tem um erro,
    porque eu defini um parâmetro
  • 6:00 - 6:02
    e ele é um parâmetro posicional.
  • 6:02 - 6:05
    Ou seja, eu posso definir
    vários parâmetros.
  • 6:05 - 6:07
    A ordem com que eu passar
    eles vai ser a ordem
  • 6:07 - 6:10
    com que o Python vai alocá-los
    dentro das variáveis.
  • 6:10 - 6:11
    Vamos lá.
  • 6:11 - 6:14
    Isso significa que se eu tivesse
    uma outra variável aqui,
  • 6:14 - 6:18
    por exemplo, idade, eu teria
    que passar aqui embaixo,
  • 6:18 - 6:21
    dentro da invocação
    da minha função,
  • 6:21 - 6:22
    a primeira variável
    que é o nome.
  • 6:22 - 6:24
    Por exemplo, aluno.
  • 6:24 - 6:27
    E se eu quiser passar idade,
    eu coloco aqui na frente.
  • 6:27 - 6:30
    Repara que a própria IDE
    já vai dando dicas para a gente
  • 6:30 - 6:32
    de como que a gente está
    esperando receber os valores.
  • 6:32 - 6:36
    Mas no nosso cenário, a gente
    só vai ter um parâmetro.
  • 6:36 - 6:37
    Então eu vou remover a idade.
  • 6:37 - 6:40
    E se a gente executa novamente
    o nosso código, agora sim.
  • 6:40 - 6:44
    A gente tem a mesma mensagem
    de antes, mas um pouco diferente.
  • 6:44 - 6:46
    Porque essa mensagem agora,
    ela está parametrizável.
  • 6:46 - 6:49
    Ou seja, a gente consegue
    controlar o comportamento
  • 6:49 - 6:51
    daquela função do lado de fora.
  • 6:51 - 6:54
    E se eu quiser usar essa função
    quantas vezes eu quiser,
  • 6:54 - 6:55
    eu posso sem problema nenhum.
  • 6:55 - 6:58
    Então, imagina, por exemplo,
    que aqui embaixo
  • 6:58 - 7:00
    eu vou querer executar
    ela mais duas vezes.
  • 7:00 - 7:04
    Só que dessa vez,
    colocando aluna,
  • 7:04 - 7:05
    e aqui embaixo,
  • 7:05 - 7:07
    talvez você esteja
    sentindo falta disso.
  • 7:07 - 7:08
    Então, mundo,
  • 7:08 - 7:12
    se eu limpar o meu terminal
    e executar novamente a aplicação,
  • 7:12 - 7:15
    a gente vê que a gente tem
    as três exibições daquela função,
  • 7:15 - 7:17
    sendo que cada uma delas
    reaproveitou o código
  • 7:17 - 7:20
    que a gente definiu na função,
    mas foi parametrizado
  • 7:20 - 7:22
    para que o comportamento
    fosse diferente.
  • 7:22 - 7:23
    Incrível, né?
  • 7:23 - 7:25
    A gente construiu uma função simples,
  • 7:25 - 7:28
    mas as funções estão
    por todo lugar na linguagem.
  • 7:28 - 7:31
    Sejam funções nativas
    ou funções de pacote que a gente
  • 7:31 - 7:33
    vai uma hora ou outra
    até que acabar usando.
  • 7:33 - 7:36
    Dá uma explorada nesse código aqui
    e tenta melhorar ele um pouco.
  • 7:36 - 7:39
    Tenta adicionar um outro parâmetro,
    um outro tipo,
  • 7:39 - 7:41
    faz condicionais lá dentro,
    loops, quem sabe.
  • 7:41 - 7:42
    Experimenta.
  • 7:42 - 7:46
    Ganha afinidade com essa sintaxe aqui
    e vamos ver até onde você chega.
Title:
vimeo.com/.../1064653172
Video Language:
Portuguese, Brazilian
Duration:
07:49

Portuguese, Brazilian subtitles

Revisions Compare revisions