Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Variáveis locais e globais PYTHON

Tenho um software que trata datas, escrito da seguinte maneira:

def EscolheDataInicio():
    controle1 = None
    controle2 = None
    if controle1 == None:
        teste = easygui.ccbox(msg="Escolher data início?", title="Escolher data de início", choices=('[O]k', '[C]ancel'))
        if teste == False:
            controle1 = 1
        else:
            while controle1 == None:
                controle1 = easygui.enterbox(msg="Insira data início", title="Definir data início")
                ValidaDataInicio()
                EscolheDataFim()

A ideia é setar um intervalo de datas (controle1 e controle2) OU setar uma data de referência padrão determinada pelo sistema (caso o usuário cancele a CCBOX, o programa assumirá que ele não pretende inserir um intervalo de datas, e setará "controle1" como "1", saindo do loop.

A dúvida é: como MANTER esse 1, para que o programa NÃO ENTRE na função novamente, já que eu declaro "controle1" como "None" como variável LOCAL a cada chamada? Já tentei declarar "controle1" como "None" FORA da função, e inserir um "global controle1" na função, mas aí ela retorna o erro "NameError: name 'controle1' is not defined".

1 resposta
solução!

Talvez ao invés de passar a função sem parâmetros você pode passá-la com parâmetros. Sendo o os "controle1" e "controle2" os parâmetros que você irá passar.

Assim, no começo do programa que vai chamar essa função, você define eles como

controle1, controle2 = None

Daí você chama a função

EscolheDataInicio(controle1, controle2)

E tira da função a parte que eles são setados para None

Daí eles vão receber 1 quando forem chamados e pei

Hope it helps ;)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software