使用raise函数在

2024-05-15 06:32:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python 2.7中使用raise函数作为一种方法,在不满足条件的情况下停止执行进一步的代码,而不退出。如下例所示:

from Tkinter import *
import tkMessageBox

def foo():
    a = 3
    if a == 2:
        tkMessageBox.showinfo('Hello', 'Yup yup yup')
    else:
        tkMessageBox.showinfo('Hello', 'My bad!')
        raise

    tkMessageBox.showinfo('Further code' ,"You shouldn't see me if a is not 2")

app = Tk()
app.title("ABC")
app.geometry()


filetype_fasta = [('fasta files', '*.fasta'), ('All files', '*.*')]
button_templ = Button(app, text = 'Click me', width =6, command = foo)
button_templ.grid(row = 3, column = 2)

app.mainloop()

我有一个复杂的剧本,它的效果很好。我的问题是-在这样使用raise的过程中,是否存在任何我应该注意的潜在问题?如果是,是否有更好/通用的方法来做同样的事情?

编辑:更改示例以更好地演示该想法。


Tags: 方法importapphelloiffoobuttontempl
1条回答
网友
1楼 · 发布于 2024-05-15 06:32:10

“加薪”声明引发的最大问题是缺乏沟通。使用raise时,最好为使用raise的函数添加一个doc字符串(即,对于函数/方法将抛出错误的条件,错误/原因是什么等等)。

还要注意,调用函数(在您的示例中调用方法foo的函数)需要有一个except来正确处理提升。甚至一些代码编写人员实际上使用raise语句来防止整个代码中出现多个返回语句。但是,在这些情况下,将使用相同的方法/函数处理加薪。

为了将事情放在一个更好的角度(为了一个新的程序员或者刚刚搬到项目中的程序员),您可以创建自定义异常并在适当的地方引发它们,而不是仅仅给出一个raise语句。正如Joran Beasley在评论中提到的,使用raise绝对没有错。除了使用raise语句来中断流程之外,还有一个目的。

准确地说,使用加薪声明不会有任何问题。但是,如果要使用raise语句,请遵循一些礼节,这会使维护代码的人的生活更简单。

相关问题 更多 >

    热门问题