Funções no python

Bom estou tentando criar um programa de cadastro no python, mas um simples somente para testar o que tenho aprendido, mas tenho um problema, criei uma função e eu retorno e em seguida armazeno em uma variável porem ele executa a função sem eu querer, alguém para me ajudar? o problema ocorre na linha 49

 # Codigo do usuario
c = 0

def menu():
    print("----------------------------------------")
    print("----------Sistema de Cadastro-----------")
    print("----------------------------------------")
    print("(1) buscar")
    print("(2) Cadastrar")
    print("(3) Excluir Cadastrado")
    print("(4) Sair")
    print("----------------------------------------")
    opcao = int(input("Digite o número: "))
    return opcao

def cadastro(c):
    # Coletando dados
    Nome = input("Digite o nome completo: ")
    Data_nasc = input("Digite a data de Nascimento: ")
    Natu = input("Digite a naturalidade: ")
    RG = input("Digite o RG: ")
    CPF = input("Digite o CPF: ")
    Cod = print("Codigo gerado:", c)
    print(50*'-')
    print("Cadastrado com Sucesso.")
    print(50*'-')

    # Configurando o Amarzenamento
    nome = []
    dataNasc = []
    natu = []
    rg = []
    cpf = []
    cod = []
    # codigo >>
    c += 1
    # Armazenando os dados
    nome.append(cadastro(Nome))
    dataNasc.append(Data_nasc)
    natu.append(Natu)
    rg.append(RG)
    cpf.append(CPF)
    cod.append(Cod)

    # Retornando Dados
    return nome, dataNasc, natu, rg, cpf, cod

# Armazenando dados na variavel
nome, dataNasc, natu, rg,cpf, cod = cadastro(c)

def busca():
    # Aprensentando com Sucesso
    print(50*'-')
    print('Cadastro encontrado.')
    print(50*'-')
    print("Nome:",nome[0])
    print("Data de Nascimento:", dataNasc[0])
    print("Naturalidade:", natu[0])
    print("RG:", rg[0])
    print("CPF:", cpf[0])
    print(50*'-')

opcao = menu()
if opcao == 4:
    pass
elif opcao == 2:
    cadastro(c)
elif opcao == 1:
    busca()

Obrigado pela sua atenção

Cara, os pontos que encontrei que irão chamar sua função cadastro novamente…

nome.append(cadastro(Nome))
...
# Armazenando dados na variavel
nome, dataNasc, natu, rg,cpf, cod = cadastro(c)

Por exemplo no nome.append você deveria guardar uma string (str) e não um código (retorno da função cadastro)… eu imagino que você quer preencher uma lista de cadastros e cada um deve retornar um código certo? A função cadastro pode ficar assim…

def cadastro(lista_cads):
    # Coletando dados
    novo_cad = {} # dicionario em python...
    novo_cad['Nome'] = input("Digite o nome completo: ")
    novo_cad['Data_nasc'] = input("Digite a data de Nascimento: ")
    novo_cad['Natu'] = input("Digite a naturalidade: ")
    novo_cad['RG'] = input("Digite o RG: ")
    novo_cad['CPF'] = input("Digite o CPF: ")
    novo_cad['Cod'] = len(lista_cads) + 1
    lista_cads.append(novo_cad) # guarda novo cadastro na lista

    print(50*'-')
    print("Cadastrado com Sucesso.")
    print(50*'-')

Depois para buscar você passaria a lista e o código que quer pegar…

def busca(lista, cod):
     ...

Dê uma pesquisada sobre dicionários em python…