在python中,如何在正在执行的函数中停止代码?

时间:2012-03-11 16:10:36

标签: python login-control python-3.2

在python 3.2中,有没有办法阻止函数的其余部分执行?

基本上,我正在创建一个登录系统作为课程作业的概念,我无法在任何地方找到答案。

我的代码分为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))

提前致谢, 汤姆

1 个答案:

答案 0 :(得分:6)

“退出函数”被称为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
  # ...