Domanda

In Python 3.2, c'è un modo per fermare il resto di un'esecuzione della funzione?

Fondamentalmente, sto creando un sistema di accesso come un concetto per i miei corsi, e non sono stato in grado di trovare la risposta a questo ovunque.

Il mio codice è suddiviso in 2 file, un logger, che gestisce l'ingresso e l'output con un logfile e le classi principali, come la connessione del database, il codice di accesso stesso, ecc.

Ecco il codice che gestisce l'input dell'utente, sono interessato alle 3 ° e alla 4a righe, che converte 'smettere' su 'quit0x0', per ridurre al minimo le possibilità del codice di chiuso chiamato per caso. Questo è il codice che gestisce l'eliminazione di un record utente dal database utente, sono interessato a come avrei fatto il 4 ° e 5 ° lavoro e interrompere il resto della funzione dall'esecuzione:

def deleteUser(self):
self.__user = getInput('Enter the username you want to delete records for: ', 1)
if self.__user == 'QUIT0x0':
    #Quit code goes here
else:
    self.__userList = []
    self.__curs.execute('SELECT id FROM users WHERE username="%s"' %(self.__user))
.

Grazie in anticipo, Tom

È stato utile?

Soluzione

"Chiudi la funzione" è chiamata return:

def deleteUser(self):
  self.__user = getInput('Enter the username you want to delete records for: ', 1)
  if self.__user == 'QUIT0x0':
    return
  else:
    # ...
.

Ma come già si utilizza if/else, il ramo else non deve comunque essere eseguito comunque, quindi il ritorno non è necessario.Potresti anche mettere un pass lì dentro:

def deleteUser(self):
  self.__user = getInput('Enter the username you want to delete records for: ', 1)
  if self.__user == 'QUIT0x0':
    pass
  else:
    # ...
.

o anche usare quanto segue:

def deleteUser(self):
  self.__user = getInput('Enter the username you want to delete records for: ', 1)
  if self.__user != 'QUIT0x0':
    # ...
.

o anche usare un ritorno anticipato:

def deleteUser(self):
  self.__user = getInput('Enter the username you want to delete records for: ', 1)
  if self.__user == 'QUIT0x0':
    return
  # ...
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top