有没有在Python中结合正则表达式匹配和检查无?

PJ.*_*des 0 python regex

假设我正在编写一个简单的解析器.它有一个调度程序,它根据输入表达式的类型调用相应的解析函数.

def dispatcher(expression):
    m = pattern1.match(expression):
    if m is not None:
        handle_type1(expression, m)
    # ... other types
Run Code Online (Sandbox Code Playgroud)

我的问题是,无论如何要结合匹配和检查None?我的意思是,类似于以下C代码:

void dispatcher(char *expression)
{
    if ((m = pattern1.match(expression)) != NULL) {
        // ... handle expression type 1
    }
    else if ((m = pattern2.match(expression)) != NULL) {
        // ... handle expression type 2
    }
    // ... other cases
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Kyl*_*tan 5

这并不是关于将模式匹配与检查无结合,它是关于是否可以分配给变量并在一个表达式中评估该赋值的结果,因为pattern.match()调用可以是返回值的任何函数.

答案一般是否定的,因为在Python中赋值是一个语句,而不是C中的表达式.

在这种情况下,我能看到的唯一区别是你为自己节省了额外的回车,这不是那么有用.赋值和比较惯用法在循环中更有用,但在Python中你只需要在两行中完成(必要时使用break).