В Python, как вы останавливаете код в выполняемой функции? - PullRequest
0 голосов
/ 11 марта 2012

В python 3.2 есть ли способ остановить выполнение остальной функции?

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

Мой код разделен на 2 файла: регистратор, который обрабатывает ввод и вывод с помощью файла журнала, и основные классы, такие как соединение с базой данных, сам код входа в систему и т. Д.

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

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

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

1 Ответ

6 голосов
/ 11 марта 2012

«Выход из функции» называется 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
  # ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...