< Return to Video

vimeo.com/.../1064653172

  • 0:08 - 0:11
    Quando a gente está implementando
    alguma coisa nova,
  • 0:11 - 0:13
    a gente nunca constrói
    tudo do zero.
  • 0:13 - 0:15
    Então, nessa brincadeira
    de reaproveitar
  • 0:15 - 0:16
    o que já está feito,
  • 0:16 - 0:18
    a gente começa a conversar sobre
    função nativa para cá e para lá,
  • 0:18 - 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:26
    Como a gente já comentou,
  • 0:26 - 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:35
    Se a gente quisesse,
  • 0:35 - 0:36
    a gente até poderia fazer
    isso tudo do zero,
  • 0:36 - 0:38
    mas tem alguns problemas
    nessa abordagem.
  • 0:38 - 0:39
    Imagina que dentro
    da sua aplicação,
  • 0:39 - 0:42
    você tem que exibir uma mensagem
    para algum usuário.
  • 0:42 - 0:44
    Dentro dessa mensagem,
  • 0:44 - 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:50
    alguma coisa desse tipo.
  • 0:50 - 0:52
    Pronto, esse seu código
    vai funcionar mais,
  • 0:52 - 0:54
    felizmente ou, infelizmente,
    mais para frente no seu código,
  • 0:54 - 0:57
    você vai ter que repetir
    aquele mesmo comportamento.
  • 0:57 - 1:00
    E conforme sua aplicação
    for crescendo,
  • 1:00 - 1:06
    provavelmente em outros lugares
    você vai ter que fazer isso também.
  • 1:06 - 1:07
    E não só nesse arquivo,
    mas em vários outros arquivos.
  • 1:07 - 1:12
    E agora você já está começando
    a enxergar qual que é o problema.
  • 1:12 - 1:14
    Não só a gente não está conseguindo
    reaproveitar aquele código,
  • 1:14 - 1:17
    porque ele está espalhado
    no meio da nossa aplicação,
  • 1:17 - 1:19
    como se a gente precisar
    trocar aquele comportamento
  • 1:19 - 1:21
    para adicionar ou remover
    alguma característica,
  • 1:21 - 1:24
    isso vai ser muito complicado,
  • 1:24 - 1:26
    porque a gente vai ter que depender
    de ferramentas de busca
  • 1:26 - 1:29
    para procurar algum
    trecho de código
  • 1:29 - 1:32
    e então alterá-lo
    em todos os lugares.
  • 1:32 - 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:46
    Com elas, a gente consegue criar blocos
    de código parametrizáveis
  • 1:46 - 1:49
    e executar uma lógica específica
    quantas vezes a gente quiser.
  • 1:49 - 1:52
    Funções existem basicamente
    todas as linguagens,
  • 1:52 - 1:55
    de uma forma ou de outra.
  • 1:55 - 1:57
    E a característica principal
    delas é isolar bloco de código
  • 1:57 - 1:59
    para reaproveitamento.
  • 1:59 - 2:03
    Sendo assim, a gente consegue
    implementar o que a gente quiser
  • 2:03 - 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:15
    o comportamento
    vai ser atualizado também.
  • 2:15 - 2:16
    Legal.
  • 2:16 - 2:17
    Agora que você entendeu a motivação
    e, mais ou menos,
  • 2:17 - 2:19
    a ideia por trás das funções,
    vamos ver, na prática,
  • 2:19 - 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:37
    Eu vou começar, então,
    aqui colocando o nome
  • 2:37 - 2:39
    da minha função, que vai
    ser exatamente minha função.
  • 2:39 - 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:47
    eu vou colocar aqui
    os parênteses e os dois pontos.
  • 2:47 - 2:50
    Pronto.
    A partir de agora, eu estou livre
  • 2:50 - 2:52
    para desenvolver
    o corpo da minha função.
  • 2:52 - 2:55
    Ou seja, o que eu quero
    que seja executado quando
  • 2:55 - 2:59
    essa função for invocada.
    No nosso exemplo, a gente vai
  • 2:59 - 3:02
    colocar apenas um print,
    escrevendo alguma mensagem
  • 3:02 - 3:06
    simples, como, por exemplo,
    olá, aluno. E salvar o arquivo.
  • 3:06 - 3:10
    Nesse momento, a gente já pode
    executar a nossa aplicação
  • 3:10 - 3:12
    usando o python.exe
    e o nome do arquivo.
  • 3:12 - 3:15
    Veja só. Aqui no terminal,
    eu vou escrever python.
  • 3:15 - 3:20
    exe, ponto barra e o
    nome do meu arquivo.
  • 3:20 - 3:24
    Ponto barra, main.py. E se eu der
    um enter, repara que a aplicação
  • 3:24 - 3:28
    até executou, mas não aconteceu
    nada de muito interessante.
  • 3:28 - 3:30
    Isso foi, basicamente,
    porque eu declarei a minha
  • 3:30 - 3:33
    função, mas eu não invoquei
    ela em lugar algum.
  • 3:33 - 3:35
    Lembra, funções são
    blocos de abstração.
  • 3:35 - 3:38
    Eu consigo escrever código
    lá dentro, mas ele só
  • 3:38 - 3:40
    é executado, de fato,
    quando eu invoco
  • 3:40 - 3:43
    essa função.
    Então, vamos lá aqui no nosso código.
  • 3:43 - 3:46
    E aqui embaixo, eu vou
    invocar essa função.
  • 3:46 - 3:49
    E para fazer isso,
    basta eu executar o nome
  • 3:49 - 3:51
    dessa função 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:03
    a gente tem a mensagem
    olá, alunos, sendo exibida.
  • 4:03 - 4:05
    E bacana, a nossa função está
    funcionando, mas ela ainda
  • 4:05 - 4:08
    não tem muita funcionalidade
    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, conseguir
  • 4:17 - 4:21
    manipular o comportamento dela
    baseado em informações externas.
  • 4:21 - 4:25
    E isso a gente faz justamente através
    de parâmetros. No Python, a gente
  • 4:25 - 4:29
    consegue definir uma lista
    de parâmetros que essa função recebe,
  • 4:29 - 4:31
    semelhante à própria
    funcionativa print.
  • 4:31 - 4:33
    Se a gente quiser
    executar ela, a gente
  • 4:33 - 4:35
    tem que mandar
    um string, ou seja,
  • 4:35 - 4:37
    um texto que vai ser
    exibido no terminal.
  • 4:37 - 4:40
    É assim que a gente controla
    o comportamento da função print,
  • 4:40 - 4:44
    parametrizando para ela a mensagem
    que a gente quer que seja exibida.
  • 4:44 - 4:47
    No nosso caso, o que a gente vai
    fazer é adicionar um parâmetro
  • 4:47 - 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:53
    Entendeu? 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:11
    Mas caso eu queira deixar
    mais claro para algum
  • 5:11 - 5:13
    desenvolvedor que pegar
    o nosso código,
  • 5:13 - 5:15
    eu posso colocar
    aqui do lado,
  • 5:15 - 5:19
    na frente dos dois
    pontos, o tipo str.
  • 5:19 - 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:31
    Se ele mandar um número, o Python
    não vai reclamar nesse momento.
  • 5:31 - 5:33
    Mas eu estou informando
    para ele que o comportamento
  • 5:33 - 5:35
    esperado é que ele mande
    um texto.
  • 5:35 - 5:36
    Tá bom? Então vamos lá.
  • 5:36 - 5:38
    Agora que dentro
    do contexto da minha função
  • 5:38 - 5:41
    eu tenho essa variável,
    eu posso usar ela.
  • 5:41 - 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:50
    E para isso, eu vou
    colocar aqui na frente
  • 5:50 - 5:52
    do sinal
    de mais a variável nome.
  • 5:52 - 5:54
    E vamos ver o que acontece
    se eu executar
  • 5:54 - 5:56
    o meu código do jeito
    que ele está.
  • 5:56 - 5:59
    Pronto! A gente agora tem
    um erro, porque eu defini
  • 5:59 - 6:02
    um parâmetro
    e ele é um parâmetro posicional.
  • 6:02 - 6:05
    Ou seja, eu posso definir
    vários parâmetros.
  • 6:05 - 6:07
    E a ordem com que eu passar
    eles vai ser a ordem
  • 6:07 - 6:11
    com que o Python vai alocá-los
    dentro das variáveis. 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, a primeira
  • 6:21 - 6:24
    variável que é o nome.
    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:33
    de como que a gente está
    esperando receber os valores.
  • 6:33 - 6:35
    Mas no nosso cenário, a gente
    só vai ter um parâmetro.
  • 6:35 - 6:37
    Então eu vou
    remover a idade.
  • 6:37 - 6:41
    E se a gente executa novamente
    o nosso código, agora sim.
  • 6:41 - 6:44
    A gente tem a mesma mensagem
    de antes, mas um pouco diferente.
  • 6:44 - 6:47
    Porque essa mensagem agora,
    ela está parametrizável.
  • 6:47 - 6:49
    Ou seja, a gente
    consegue controlar
  • 6:49 - 6:51
    o comportamento daquela
    função do lado de fora.
  • 6:51 - 6:54
    E se eu quiser usar
    essa função quantas vezes
  • 6:54 - 6:56
    eu quiser, eu posso
    sem problema nenhum.
  • 6:56 - 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:03
    Só que dessa vez,
    colocando aluna, e aqui
  • 7:03 - 7:07
    embaixo, talvez você esteja
    sentindo falta disso.
  • 7:07 - 7:09
    Então, mundo, se
    eu limpar o meu terminal
  • 7:09 - 7:12
    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
  • 7:17 - 7:19
    o código que a gente
    definiu na função,
  • 7:19 - 7:20
    mas foi
    parametrizado
  • 7:20 - 7:22
    para que o comportamento
    fosse diferente.
  • 7:22 - 7:25
    Incrível, né?
    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:30
    Sejam funções nativas
    ou funções de pacote que a gente
  • 7:30 - 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:42
    faz condicionais lá
    dentro, loops, quem sabe.
  • 7:42 - 7:44
    Experimenta.
    Ganha afinidade com essa sintaxe
  • 7:44 - 7:46
    aqui e vamos ver
    até onde você chega.
  • 7:46 - 7:47
    E aí.
Title:
vimeo.com/.../1064653172
Video Language:
Portuguese, Brazilian
Duration:
07:49

Portuguese, Brazilian subtitles

Revisions Compare revisions