Olá, Samuel! Tudo bem?
Em Python, a ordem em que você define suas funções importa. O interpretador Python lê e executa seu script linha por linha, de cima para baixo.
Quando ele encontra uma função, ele a registra para uso posterior, mas não a executa até que seja chamada. Se você tentar chamar uma função antes de defini-la, o Python não saberá o que fazer, porque ainda não registrou essa função.
No seu exemplo, se você mover o def abrir_arquivo():
para o final do código, quando o Python chegar na linha abrir_arquivo()
, ele não saberá o que é abrir_arquivo
porque ainda não encontrou a definição da função.
Um exemplo prático para entender melhor:
def funcao1():
print("Função 1 chamada")
def funcao2():
print("Função 2 chamada")
funcao1()
funcao2()
Nesse exemplo, funcao1
é definida antes de funcao2
, e funcao2
chama funcao1
. Quando chamamos funcao2
no final do script, ela imprime "Função 2 chamada" e depois chama funcao1
, que imprime "Função 1 chamada". Se invertêssemos a ordem das definições de função, teríamos um erro porque funcao2
tentaria chamar funcao1
antes de funcao1
ser definida.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.