< Return to Video

vimeo.com/.../1064653172

  • 0:08 - 0:10
    Quando a gente está
    implementando alguma coisa
  • 0:10 - 0:13
    nova, a gente nunca
    constrói tudo do zero.
  • 0:13 - 0:15
    Então, nessa brincadeira
    de reaproveitar
  • 0:15 - 0:18
    o que já está feito,
    a gente começa a conversar
  • 0:18 - 0:20
    sobre função nativa
    para cá e para lá, e agora
  • 0:20 - 0:22
    finalmente chegou
    o momento da gente entender
  • 0:22 - 0:25
    o que são funções
    para que servem e construir
  • 0:25 - 0:27
    a nossa primeira.
    Como a gente já comentou, a gente
  • 0:27 - 0:30
    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, a gente
    até poderia fazer isso
  • 0:35 - 0:38
    tudo do zero, mas tem alguns
    problemas nessa abordagem.
  • 0:38 - 0:40
    Imagina que dentro da sua
    aplicação, você tem
  • 0:40 - 0:42
    que exibir uma mensagem
    para algum usuário.
  • 0:42 - 0:45
    Dentro dessa mensagem,
    você provavelmente vai ter
  • 0:45 - 0:48
    o nome do usuário e alguns
    elementos extras, como
  • 0:48 - 0:51
    um prefixo ou sufixo, alguma
    coisa desse tipo. Pronto,
  • 0:51 - 0:54
    esse seu código vai funcionar
    mais, felizmente ou,
  • 0:54 - 0:57
    infelizmente, mais para frente
    no seu código, você
  • 0:57 - 1:00
    vai ter que repetir aquele
    mesmo comportamento. E
  • 1:00 - 1:03
    conforme sua aplicação for
    crescendo, provavelmente
  • 1:03 - 1:06
    em outros lugares você vai
    ter que fazer isso também.
  • 1:06 - 1:08
    E não só nesse arquivo,
    mas em vários outros arquivos. E
  • 1:08 - 1:12
    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
  • 1:14 - 1:17
    aquele código, porque
    ele está espalhado no meio
  • 1:17 - 1:19
    da nossa aplicação, como
    se a gente precisar trocar
  • 1:19 - 1:22
    aquele comportamento
    para adicionar ou remover
  • 1:22 - 1:24
    alguma característica,
    isso vai ser muito
  • 1:24 - 1:26
    complicado, porque a gente
    vai ter que depender
  • 1:26 - 1:29
    de ferramentas de busca
    para procurar algum trecho
  • 1:29 - 1:32
    de código e então alterá-lo
    em todos os lugares.
  • 1:32 - 1:34
    É muito fácil a gente
    acabar esquecendo um ou dois
  • 1:34 - 1:37
    lugares 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
  • 1:46 - 1:48
    parametrizáveis e executar
    uma lógica específica
  • 1:48 - 1:52
    quantas vezes a gente quiser.
    Funções existem basicamente
  • 1:52 - 1:55
    todas as linguagens,
    de uma forma ou de outra.
  • 1:55 - 1:57
    E a característica principal
    delas é isolar bloco
  • 1:57 - 2:00
    de código para reaproveitamento.
    Sendo assim,
  • 2:00 - 2:03
    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:17
    legal. Agora que você
    entendeu a motivação e,
  • 2:17 - 2:19
    mais ou menos, a ideia
    por trás das funções,
  • 2:19 - 2:22
    vamos ver, na prática, como
    que isso funciona no Python.
  • 2:22 - 2:23
    Então, vamos lá
    para o código.
  • 2:23 - 2:25
    Aqui no VS Code, eu já
    tenho meu arquivo main.
  • 2:25 - 2:28
    py criado. 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
  • 2:33 - 2:35
    de fazer 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