首页 > 解决方案 > 函数可以在 for 循环语句中返回两次吗

问题描述

我有以下函数来检查正则表达式输入是否合法:

重新进口

def isvalid_regex():
    for _ in range(2):
        try:
            re.compile(input())
            return True
        except re.error:
            return False

这里的问题是我没有得到我所期望的双重输入range(2)。该函数返回 me FalseorTrue并退出。我猜一个函数不能重复返回语句 afor loop in range(x)存在的次数,对吗?我的目标是有一个双输入和一个双 True 或 False return。例如作为输出:

True
False

标签: python

解决方案


return语句结束函数。
你有两个选择:

1.发电机

您可以在以下位置了解生成器:https ://docs.python.org/3/howto/functional.html?#generators

def isvalid_regex():
    for _ in range(2):
        try:
            re.compile(input())
            yield True
        except re.error:
            yield False


for x in isvalid_regex():
    print(x)

输入和输出:

t
True
\\\
False

2.建立一个列表并返回一次

def isvalid_regex():
    results = []
    for _ in range(2):
        try:
            re.compile(input())
            results.append(True)
        except re.error:
            results.append(False)
    return results


for x in isvalid_regex():
    print(x)

输入和输出:

t
\\\
True
False

笔记:

您可能会注意到执行顺序不同。你可以选择适合你的情况。


推荐阅读