Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法“;中断”;或“;继续”;在Python函数中?_Python - Fatal编程技术网

有没有办法“;中断”;或“;继续”;在Python函数中?

有没有办法“;中断”;或“;继续”;在Python函数中?,python,Python,我需要编写一个函数(Flask视图),它将测试关于请求的几个条件,并根据这些测试返回一条消息 例如 def index(): test1result = test1(request.form['data']) if not test1result: message = 'Failed test 1' test2result = test2(request.form['data']) if not test2result: mess

我需要编写一个函数(Flask视图),它将测试关于请求的几个条件,并根据这些测试返回一条消息

例如

def index():
    test1result = test1(request.form['data'])
    if not test1result:
        message = 'Failed test 1'

    test2result = test2(request.form['data'])
    if not test2result:
        message = 'Failed test 2'

    test3result = test3(request.form['data'])
    if not test3result:
        message = 'Failed test 3'

    return render_template('index.html', message = message)

如果第一个测试失败,我不希望第二个或第三个测试运行并覆盖我的消息。我的第一个想法是在每个IF块中插入return语句,但这看起来很混乱。

在这种情况下,如果第一个测试失败,您应该使用
elif
只分支到以后的测试中,或者只使用
return
。但你也可以这样做:

def index():
    messages = []
    test1result = test1(request.form['data'])
    if not test1result:
        message.append('Failed test 1')

    test2result = test2(request.form['data'])
    if not test2result:
        message.append('Failed test 2')

    test3result = test3(request.form['data'])
    if not test3result:
        message.append('Failed test 3')

    return render_template('index.html', messages=messages)

并让您的视图显示所有错误消息。

在这种情况下,如果第一次测试失败,您应该使用
elif
只分支到以后的测试,或者只返回
即可。但你也可以这样做:

def index():
    messages = []
    test1result = test1(request.form['data'])
    if not test1result:
        message.append('Failed test 1')

    test2result = test2(request.form['data'])
    if not test2result:
        message.append('Failed test 2')

    test3result = test3(request.form['data'])
    if not test3result:
        message.append('Failed test 3')

    return render_template('index.html', messages=messages)
并让您的视图显示所有错误消息

我的第一个想法是在每个IF块中插入return语句,但这看起来很混乱

如果您进行一次小的重构,则情况并非如此:

def index_message():
    test1result = test1(request.form['data'])
    if not test1result:
        return 'Failed test 1'

    test2result = test2(request.form['data'])
    if not test2result:
        return 'Failed test 2'

    test3result = test3(request.form['data'])
    if not test3result:
        return 'Failed test 3'

    return '......'

def index():
    message = index_message()
    return render_template('index.html', message = message)
或者,您可以使用
else
elif
来避免进一步处理

如果有更多测试,请将它们添加到数据结构(例如:
列表
)并使用循环。不要重复代码

我的第一个想法是在每个IF块中插入return语句,但这看起来很混乱

如果您进行一次小的重构,则情况并非如此:

def index_message():
    test1result = test1(request.form['data'])
    if not test1result:
        return 'Failed test 1'

    test2result = test2(request.form['data'])
    if not test2result:
        return 'Failed test 2'

    test3result = test3(request.form['data'])
    if not test3result:
        return 'Failed test 3'

    return '......'

def index():
    message = index_message()
    return render_template('index.html', message = message)
或者,您可以使用
else
elif
来避免进一步处理


如果有更多测试,请将它们添加到数据结构(例如:
列表
)并使用循环。不要重复代码。

您可以使用
elif

首先运行所有测试,然后运行
if elif

def index():
    test1result = test1(request.form['data'])
    test2result = test2(request.form['data'])
    test3result = test3(request.form['data'])
    if not test1result:
        message = 'Failed test 1'
    elif not test2result:
        message = 'Failed test 2'
    elif not test3result:
        message = 'Failed test 3'

    return render_template('index.html', message = message)

您可以使用
elif

首先运行所有测试,然后运行
if elif

def index():
    test1result = test1(request.form['data'])
    test2result = test2(request.form['data'])
    test3result = test3(request.form['data'])
    if not test1result:
        message = 'Failed test 1'
    elif not test2result:
        message = 'Failed test 2'
    elif not test3result:
        message = 'Failed test 3'

    return render_template('index.html', message = message)
使用循环

def index():
   tests = [test1, test2, test3]
   for i, test in enumerate(tests, 1):
       if not test(request.form['data']):
           return render_template('index.html', message="Failed test %s" % i)
使用循环

def index():
   tests = [test1, test2, test3]
   for i, test in enumerate(tests, 1):
       if not test(request.form['data']):
           return render_template('index.html', message="Failed test %s" % i)

一点也不乱。使用
返回
!我认为最好的方法是拿一本书来研究基础,你也可以使用例外,一点也不混乱。使用
返回
!我认为最好的方法是拿一本书来研究基本知识,你也可以使用例外。