一个函数可以在for循环语句中返回两次吗

ale*_*lex 2 python

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

进口重新

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

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

True
False
Run Code Online (Sandbox Code Playgroud)

Bos*_*hoi 7

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)
Run Code Online (Sandbox Code Playgroud)

输入和输出:

t
True
\\\
False
Run Code Online (Sandbox Code Playgroud)

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

t
True
\\\
False
Run Code Online (Sandbox Code Playgroud)

输入和输出:

t
\\\
True
False
Run Code Online (Sandbox Code Playgroud)

笔记:

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