Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Ordem das funções

Ordem das funçõe:

Boa tarde. Em primeiro lugar, colocarei aqui o código que esta sendo desenvolvido na aula:

import os
def nome_rest():
    print(f'Programa do luquitas\n')

def lista_opcoes():
    print(f'1 - Cadastrar Restaurante')
    print(f'2 - Listar Restaurante')
    print(f'3 - Ativar restaurante')
    print(f'4 - Sair\n')

def finalizar_app():
    os.system('cls')
    print('Tenha um bom dia e volte sempre!!')

def opcao_invalida():
        print('Opção inválida\n')
        input('Digite qualquer tecla para voltar ao menu principal: ')
        main()


def escolher_opcoes():
    try:
        escolher_opcao = int(input('Escolha uma das opções acima: '))
        if escolher_opcao == 1:
            cadastro = input('Digite o nome do seu restaurante: ')
            print(f'O restaurante {cadastro} foi cadastrado com sucesso!!')
        elif escolher_opcao == 2:
            listar = input('Liste aqui seu restaurante: ')
            print(f'O restaurante {listar} foi listado com sucesso!!')
        elif escolher_opcao == 3:
            print('Restaurante ativado com sucesso')
        elif escolher_opcao == 4:
            finalizar_app()
        else:
            opcao_invalida()
    except:
        opcao_invalida()

def main():
    os.system('cls')
    nome_rest()
    lista_opcoes()
    escolher_opcoes()         

if __name__ == '__main__':
    main()

Durante a aula surgiu uma dúvida a respeito das funções. Percebi que durante a construção do programa, utilizou-se a função main () dentro da função opção_invalida(). Porém a função main é definida somente no final do código. Gostaria de entender porque mesmo assim funciona. No meu entendimento, quando escrevemos um script, era para o interpretador ler linha a linha, certo??? Como ele entende uma função no começo do script que foi definida somente no final??

2 respostas
solução!

Olá! Entendo que a ordem das funções pode parecer confusa, mas na verdade, em Python, a ordem das definições de funções não influencia tanto quanto você pode pensar.

Vamos usar um exemplo simples para ilustrar isso:

def funcao1():
    print("Função 1 chamada")
    funcao2()

def funcao2():
    print("Função 2 chamada")

funcao1()

Neste exemplo, funcao1 é definida antes de funcao2. No entanto, dentro de funcao1, chamamos funcao2. Mesmo que funcao2 ainda não tenha sido definida quando definimos funcao1, isso não causa nenhum problema. Isso ocorre porque funcao2 já foi definida no momento em que realmente chamamos funcao1.

Voltando ao seu código, quando você chama main() dentro de opcao_invalida(), não importa onde main() é definida no código, contanto que seja definida em algum lugar antes de realmente chamar opcao_invalida().

O interpretador Python não executa as funções na ordem em que são definidas no script. Ele apenas registra as definições das funções. A ordem de execução das funções é determinada pela lógica do seu programa.

Espero ter ajudado e bons estudos!

entendi, muito obrigado