< Return to Video

vimeo.com/.../1064653433

  • 0:19 - 0:20
    Parâmetros ajudam a gente
    a modular o comportamento
  • 0:20 - 0:21
    de uma função,
    e a gente já sabe como
  • 0:21 - 0:23
    definir parâmetros
    simples, que são informados
  • 0:23 - 0:24
    de forma posicional,
    e parâmetros de quantidade
  • 0:24 - 0:26
    dinâmica, em que a gente
    consegue lidar com eles
  • 0:26 - 0:27
    como se fosse uma coleção qualquer.
    Chegou
  • 0:27 - 0:28
    a hora da gente ver como
    lidar com parâmetros
  • 0:28 - 0:29
    que podem ou não virem
    para a nossa função.
  • 0:29 - 0:31
    O que a gente vai ver
    agora são chamados
  • 0:31 - 0:33
    QArgs, ou Keyword
    Arguments, que são
  • 0:33 - 0:35
    argumentos que a gente
    passa no formato
  • 0:35 - 0:37
    de dicionário.
    E para que eles servem?
  • 0:42 - 0:44
    Imagina que você tem que trabalhar
    com a função que você tem
  • 0:44 - 0:47
    um valor específico que tem
    que ser informado. Nesse cenário,
  • 0:47 - 0:49
    você informa para ele um parâmetro
    simples, que sempre vai
  • 0:49 - 0:53
    estar lá, e que se não for
    informado, o Python dá um erro.
  • 0:53 - 0:55
    Por outro lado, se você
    tem uma lista de quantidade
  • 0:55 - 0:57
    dinâmica, a gente vai
    ter que usar os args,
  • 0:57 - 0:58
    para que a gente consiga
    manipular eles de forma
  • 0:58 - 1:01
    dinâmica, sem se preocupar
    com a quantidade total.
  • 1:01 - 1:05
    No entanto, a gente pode querer
    um parâmetro que vai estar
  • 1:05 - 1:08
    ou não presente. Ou seja,
    ele é uma informação opcional.
  • 1:08 - 1:11
    Se ele estiver presente, a gente
    faz alguma coisa com ele.
  • 1:11 - 1:15
    Caso não, a gente não faz
    ou assume algum valor padrão.
  • 1:15 - 1:18
    E para isso, a estrutura de dados
    mais adequada que a gente conhece
  • 1:18 - 1:20
    é o dicionário,
    que é justamente o tipo
  • 1:20 - 1:22
    entregue quando
    a gente usa os QArgs.
  • 1:22 - 1:24
    Então, agora, vamos
    lá para o código e dar
  • 1:24 - 1:26
    uma olhada em como
    esse cara funciona.
  • 1:26 - 1:28
    Aqui no VS Code,
    a gente já tem
  • 1:28 - 1:30
    um código de exemplo,
    que é uma função
  • 1:30 - 1:33
    simples que exibe uma mensagem
    olá e algum nome que foi entregue.
  • 1:33 - 1:35
    Se a gente exibir ela aqui,
    executar ela, na verdade,
  • 1:35 - 1:40
    com o comando do Python, a gente
    vai ver exatamente isso na tela.
  • 1:40 - 1:42
    Mas, imagina que a gente queira
    receber aqui a informação
  • 1:42 - 1:45
    de se esse aluno Fez
    ou não um trabalho prático.
  • 1:45 - 1:47
    Então, a gente precisa
    de uma informação
  • 1:47 - 1:48
    que vai dizer
    para a gente,
  • 1:48 - 1:51
    na verdade, a nota que ele tirou
    nesse trabalho prático.
  • 1:51 - 1:53
    E se ele não tiver
    uma nota, não significa
  • 1:53 - 1:56
    que ele tirou zero.
    Significa que ele não entregou.
  • 1:56 - 1:58
    Tá bom?
    Então, vamos começar com isso.
  • 1:58 - 2:01
    A gente poderia definir
    aqui duas variáveis.
  • 2:01 - 2:04
    Uma para informar se ele Fez
    ou não um trabalho prático.
  • 2:04 - 2:06
    E, para isso, a gente
    usaria o tipo booleano.
  • 2:06 - 2:08
    E, depois, uma outra
    para especificar a nota.
  • 2:08 - 2:11
    Mas, como a gente consegue
    usar os QArgs, a gente vai
  • 2:11 - 2:14
    fazer isso de uma vez só,
    informando apenas a nota.
  • 2:14 - 2:15
    Então, saca só.
  • 2:15 - 2:17
    Eu vou colocar aqui
    a minha outra variável,
  • 2:17 - 2:19
    que vai ser o meu
    outro parâmetro,
  • 2:19 - 2:25
    que eu vou chamar
    de informações adicionais.
  • 2:25 - 2:28
    E, nesse caso, para que o Python
    entenda que isso
  • 2:28 - 2:31
    daqui é um QArgs e não
    uma variável simples,
  • 2:31 - 2:33
    eu vou ter que colocar
    não um, mas, dessa
  • 2:33 - 2:35
    vez, dois asteriscos
    no começo dela.
  • 2:35 - 2:37
    Então, pronto.
    A partir de agora, se
  • 2:37 - 2:40
    eu executar a aplicação
    sem mexer na invocação
  • 2:40 - 2:42
    ou no conteúdo daquela
    função, o Python
  • 2:42 - 2:45
    consegue executar isso
    sem problema nenhum.
  • 2:45 - 2:48
    Porque ele já entendeu
    que isso se trata de um QArgs
  • 2:48 - 2:51
    e que as informações que estão
    ali, elas são opcionais.
  • 2:51 - 2:53
    Ou seja, eu posso informar ou não.
  • 2:53 - 2:54
    Se a gente vier
    aqui dentro do bloco
  • 2:54 - 2:56
    de código, vamos executar
    um print com aquele
  • 2:56 - 2:58
    valor, só para a gente
    entender o formato
  • 2:58 - 3:00
    que as coisas estão
    chegando aqui dentro.
  • 3:00 - 3:05
    Eu vou copiar o nome da variável e,
    aqui, chamar a função nativa print,
  • 3:05 - 3:07
    passando ela para a gente
    ver ali no terminal.
  • 3:07 - 3:09
    Eu vou executar mais uma vez.
  • 3:09 - 3:11
    E repara que a mensagem
    está aqui e que, aqui
  • 3:11 - 3:13
    embaixo, dessa vez,
    eu tenho um dicionário,
  • 3:13 - 3:17
    que é aquela estrutura que a gente
    usa baseada em chave e valor.
  • 3:17 - 3:19
    Então, eu vou começar
    aqui, na invocação
  • 3:19 - 3:22
    do método, passando valores
    para esse meu QArgs.
  • 3:22 - 3:27
    E, para fazer isso, eu posso
    passar eles no formato de chaves.
  • 3:27 - 3:28
    Ou seja, eu tenho
    que colocar o nome
  • 3:28 - 3:31
    e o valor que eu quero
    para aquela chave.
  • 3:31 - 3:32
    No nosso caso,
    vai ser a nota
  • 3:32 - 3:35
    do trabalho prático,
    ou seja, nota tp.
  • 3:35 - 3:38
    Então, por isso, eu vou
    colocar aqui nota tp,
  • 3:38 - 3:41
    o sinal de igual e o valor
    que eu quero informar.
  • 3:41 - 3:44
    Que, nesse caso, vai
    ser, por exemplo, 10.
  • 3:44 - 3:46
    Eu vou só salvar o meu
    programa e executar
  • 3:46 - 3:49
    de novo para a gente
    ver o que mudou.
  • 3:49 - 3:51
    Aqui, a mensagem continua
    a mesma coisa, só que,
  • 3:51 - 3:54
    dessa vez, repara que dentro
    do meu dicionário,
  • 3:54 - 3:57
    eu tenho a chave
    nota tp com valor 10.
  • 3:57 - 3:59
    E, a partir daqui,
    a gente já consegue
  • 3:59 - 4:00
    trabalhar
    com essa informação.
  • 4:00 - 4:02
    E é exatamente isso que a gente
    vai fazer aqui agora.
  • 4:02 - 4:04
    Eu vou abrir um espacinho
    entre as duas
  • 4:04 - 4:07
    mensagens e uma coisa
    que a gente tem que lembrar
  • 4:07 - 4:10
    é que os QArgs são informações
    realmente opcionais.
  • 4:10 - 4:12
    Então, a gente tem
    que lidar com o cenário
  • 4:12 - 4:14
    delas estarem
    presentes ou não.
  • 4:14 - 4:17
    E a estrutura do dicionário
    entrega formas
  • 4:17 - 4:19
    de a gente lidar com isso
    sem problema algum.
  • 4:19 - 4:21
    Então, eu vou,
    basicamente, antes de usar
  • 4:21 - 4:23
    as informações
    daquele dicionário,
  • 4:23 - 4:25
    ver se tem alguma
    informação dentro
  • 4:25 - 4:27
    da chave que eu estou
    pretendendo usar.
  • 4:27 - 4:29
    Então, para isso, a nossa regra
    vai ser a seguinte.
  • 4:29 - 4:31
    Se a gente não tiver
    aquela chave, significa
  • 4:31 - 4:34
    que o aluno não Fez
    o trabalho prático.
  • 4:34 - 4:35
    E, por isso, eu vou,
    basicamente, exibir
  • 4:35 - 4:38
    uma mensagem falando
    que a gente não encontrou tp.
  • 4:38 - 4:39
    Vamos lá.
  • 4:39 - 4:43
    Aqui dentro, eu vou começar
    com uma condicional para que eu veja
  • 4:43 - 4:46
    se a chave nota tp está
    dentro daquela minha variável.
  • 4:46 - 4:50
    Então, eu vou colocar
    aqui entre aspas,
  • 4:50 - 4:54
    nota tp em informações
    adicionais.
  • 4:54 - 4:56
    Ou seja, se aquela nota
    estiver dentro daquelas
  • 4:56 - 4:59
    informações, então esse bloco
    de código vai ser executado.
  • 4:59 - 5:02
    Mas como que eu quero
    exatamente o contrário,
  • 5:02 - 5:04
    eu vou colocar uma negação
    aqui antes do in.
  • 5:04 - 5:06
    Então, fica da seguinte forma.
  • 5:06 - 5:08
    Se a chave nota tp
    não estiver dentro
  • 5:08 - 5:11
    do dicionário
    informações adicionais,
  • 5:11 - 5:18
    então eu quero exibir uma mensagem
    falando que o tp não foi encontrado.
  • 5:18 - 5:22
    E como, a partir daqui, eu não
    quero executar mais nada,
  • 5:22 - 5:25
    eu vou apenas escrever um return
    para que o Python entenda
  • 5:25 - 5:28
    que eu não tenho que executar
    mais nada daqui para frente
  • 5:28 - 5:30
    e saia dessa função.
  • 5:30 - 5:33
    Vamos rodar aqui de novo
    o nosso terminal.
  • 5:33 - 5:36
    Ou melhor, limpar o terminal
    e executar novamente a aplicação
  • 5:36 - 5:39
    para a gente ver como que as coisas
    se comportam do jeito que está.
  • 5:39 - 5:43
    Desse jeito aqui, a aplicação
    não entrou na condicional
  • 5:43 - 5:44
    e seguiu adiante
    exibindo aquele
  • 5:44 - 5:47
    nosso dicionário
    de informações adicionais.
  • 5:47 - 5:50
    Mas se a partir de agora
    eu remover essa informação,
  • 5:50 - 5:53
    ele entra na condicional
    e exibe a mensagem para a gente.
  • 5:53 - 5:56
    Então eu vou voltar
    com ela daqui para que a gente
  • 5:56 - 5:59
    coloque mais coisa aqui
    no fluxo do nosso programa.
  • 5:59 - 6:01
    E a partir desse momento,
    a gente está trabalhando
  • 6:01 - 6:04
    com a possibilidade de que a nota
    está sendo entregue.
  • 6:04 - 6:07
    Então eu vou colocar um if para ver
    se essa nota é maior do que 7.
  • 6:07 - 6:09
    Se for, então o aluno
    está aprovado.
  • 6:09 - 6:12
    Se não for, então o
    aluno está reaprovado.
  • 6:12 - 6:14
    Então eu vou começar
    com mais uma condicional
  • 6:14 - 6:16
    e eu vou acessar
    o informações adicionais
  • 6:16 - 6:20
    e usar o método get
    para pegar aquela chave.
  • 6:20 - 6:22
    Qual que é a chave?
  • 6:22 - 6:23
    a nota tp.
  • 6:23 - 6:26
    Eu copio aqui e vejo se
    ela é maior do que 7.
  • 6:26 - 6:30
    Se ela for maior do que 7,
    eu vou copiar aqui essa mensagem
  • 6:30 - 6:32
    e eu vou editar para que ela seja.
  • 6:34 - 6:38
    parabéns, você foi aprovado no tp.
  • 6:38 - 6:41
    E eu também vou definir
    um caso padrão, que é o Else,
  • 6:41 - 6:43
    para quando essa condicional
    não for atendida.
  • 6:43 - 6:46
    E se esse for o caso,
    eu vou exibir a mensagem.
  • 6:48 - 6:51
    Infelizmente, você não
    foi aprovado no tp.
  • 6:51 - 6:53
    E pronto.
  • 6:53 - 6:56
    Deixa eu só tirar essa mensagem
    aqui de baixo, limpar o terminal,
  • 6:56 - 6:58
    e se a gente executa
    a nossa aplicação
  • 6:58 - 7:00
    novamente, a gente
    tem a mensagem
  • 7:00 - 7:04
    Olá aluno, que a gente não mexeu,
    e parabéns, você foi aprovado no tp.
  • 7:04 - 7:07
    Se a gente abaixa
    um pouco essa nota aqui,
  • 7:07 - 7:09
    para algo próximo de 10,
    mas um pouco abaixo
  • 7:09 - 7:12
    de 7, por exemplo, 1,
    a gente vai ter a mensagem
  • 7:12 - 7:15
    Infelizmente, você não
    foi aprovado no tp.
  • 7:15 - 7:18
    E é dessa forma que a gente
    consegue preparar as nossas funções
  • 7:18 - 7:21
    para que elas consigam lidar
    com informações opcionais, ou seja,
  • 7:21 - 7:24
    que podem ou não serem formadas.
  • 7:24 - 7:27
    Claro, a gente poderia
    também lidar com informações
  • 7:27 - 7:30
    do tipo se a variável
    estiver com um valor vazio,
  • 7:30 - 7:32
    ou se uma boleana estiver
    informando algo, então
  • 7:32 - 7:35
    eu posso assumir que uma outra
    variável tem um valor.
  • 7:35 - 7:39
    Mas está começando a ficar bem claro
    que isso ficaria muito complicado
  • 7:39 - 7:42
    de dar manutenção e até mesmo
    de entender o que está acontecendo.
  • 7:42 - 7:46
    E da mesma forma com que a gente
    tem diversas estruturas de dados,
  • 7:46 - 7:48
    a gente também tem
    diversas possibilidades.
  • 7:48 - 7:51
    Cada um atende um cenário
    e cabe a gente a decidir qual
  • 7:51 - 7:53
    que é a melhor para o nosso caso
    de uso específico.
Title:
vimeo.com/.../1064653433
Video Language:
Portuguese, Brazilian
Duration:
07:57
Roberto Severiano Junior edited Portuguese subtitles for vimeo.com/.../1064653433
Roberto Severiano Junior edited Portuguese subtitles for vimeo.com/.../1064653433
Roberto Severiano Junior edited Portuguese subtitles for vimeo.com/.../1064653433
Roberto Severiano Junior edited Portuguese subtitles for vimeo.com/.../1064653433
Roberto Severiano Junior edited Portuguese subtitles for vimeo.com/.../1064653433
Roberto Severiano Junior edited Portuguese subtitles for vimeo.com/.../1064653433
Roberto Severiano Junior edited Portuguese subtitles for vimeo.com/.../1064653433
Roberto Severiano Junior edited Portuguese subtitles for vimeo.com/.../1064653433
Show all

Portuguese subtitles

Revisions Compare revisions