2012-03-11 2 views
0

В python 3.2 есть ли способ остановить остальную часть выполняемой функции?В python, как вы останавливаете код в исполняемой функции?

В принципе, я создаю систему входа в систему как концепцию моей курсовой работы, и я не смог найти ответ на это в любом месте.

Мой код разделен на 2 файлов, регистратор, который обрабатывает ввод и вывод с логфайл и основных классов, таких как подключение к базе данных, самого входа кода и т.д.

Вот код который обрабатывает ввод пользователя, меня интересуют 3-я и 4-я строки, которые преобразуют «quit» в «QUIT0x0», чтобы минимизировать вероятность того, что код выхода будет вызываться случайно.

def getInput(input_string, type): 
    result = input(input_string) 
    if result.lower == 'quit': 
      result = 'QUIT0x0' 
    #log the input string and result 
    if type == 1: 
      with open(logFile, 'a') as log_file: 
        log_file.write('[Input] %s \n[Result] %s\n' %(input_string, result)) 
        return result 
    #no logging 
    elif type == 2: 
      return result 
    #undefined type, returns 'Undefined input type' for substring searches, and makes a log entry 
    else: 
      result = '[Undefined input type] %s' %(input_string) 
      output(result, 4) 
      return result 

Это код, который обрабатывает удаление записи пользователя из базы данных пользователя, я заинтересован в том, как я хотел бы сделать 4-й и 5-й линии работу и остановки остальных функций от исполнения:

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)) 

Спасибо заранее, Том

+0

'result.lower' должны be 'result.lower()' –

+0

Почему код 'quit()' вызывается случайно? –

ответ

6

"Quit функция" называется return:

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

Но поскольку вы уже используете if/else, ветвь else не должна выполняться в любом случае, поэтому возврат не требуется. Вы могли бы точно так же положить pass там:

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

Или даже использовать следующее:

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

Или даже использовать раннее возвращение:

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

Теперь я чувствую себя глупо, lol Спасибо :) – Billie

+1

@Billie: Глупо, как в «Я этого не понимаю» или в «Я должен был понять это сам»? ;) Кроме того, если это было полезно, подумайте о том, чтобы принять это как ответ, используя кнопку тикания слева. –

+0

«Я должен был понять это сам», и я это сделаю, но это не даст мне еще шесть минут – Billie

Смежные вопросы