2
respostas

função chamando função

Olá instrutores,

Vamos dizer que tenho uma função que liste restaurantes antes cadastrados em um dicionario. Essa funcao chama outra funcao para limpar o terminal e imprimir um titulo. Outra funcao que tenho, muda o status destes restaurantes, dizendo se estao ativos ou nao. É exatamente como explica o exercicio e o curso. Implementei que quando chama a funcao status, a listar restaurantes é chamada. Mas nao queria que o titulo de listar aparecesse. Resumindo: quero chamar uma funcao mas nao quero algumas utilidades dela. Em python, temos alguma maneira de fazer isso?? O que eu pensei e que nao deu certo, é que se a funcao menu_aletrar_status() nao fosse chamada, nao chamaria impressao_subtitulos(), com isso a impresao do subtitulo nao apareecria. mas ta dando bug com um try do menu.

def menu_listar():
    if not menu_alterar_status(): ##
        impressao_subtitulos('Listar lojas')
    print(f'{'Nome da Loja'.ljust(25)}|{
          'Categoria da loja'.ljust(30)}|{'Status da loja'}')
    print(f'{'-'*24}  {'-'*29}  {'-'*22}')
    for loja in lojas:
        print(f'{loja['nome'].ljust(25)}|{
            loja['categoria'].ljust(30)}|{loja['status']}')
    voltar_ao_menu()

como eu poderia chamar uma funcao e nao usar alguma funcionalidade dela?

muito obrigado

2 respostas

Uma maneira que encontrei foi criar uma funcao imprimir restaurantes e as duas outras funcoes, listar e status chamam dela, filtrando esse problema. Mas teria alguma maneira de chamar uma funcao e nao usar algum metodo dessa funcao??

Olá, André! Tudo bem?

No Python, uma função é um bloco de código que só é executado quando é chamado. Se você chamar uma função, todo o código dentro dela será executado. Então, não é possível chamar uma função e escolher não executar parte dela.

No entanto, uma solução possível para o seu problema seria adicionar um parâmetro à função menu_listar(), que determina se a função impressao_subtitulos() deve ser chamada ou não. Vou te mostrar como isso pode ser feito:

def menu_listar(imprimir_titulo=True):
    if imprimir_titulo:
        impressao_subtitulos('Listar lojas')
    print(f'{'Nome da Loja'.ljust(25)}|{'Categoria da loja'.ljust(30)}|{'Status da loja'}')
    print(f'{'-'*24}  {'-'*29}  {'-'*22}')
    for loja in lojas:
        print(f'{loja['nome'].ljust(25)}|{loja['categoria'].ljust(30)}|{loja['status']}')
    voltar_ao_menu()

Agora, quando você chama menu_listar(), o título será impresso por padrão. Mas se você chamar menu_listar(False), o título não será impresso.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.