假设我正在编写一个简单的解析器.它有一个调度程序,它根据输入表达式的类型调用相应的解析函数.
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)
谢谢!
这并不是关于将模式匹配与检查无结合,它是关于是否可以分配给变量并在一个表达式中评估该赋值的结果,因为pattern.match()调用可以是返回值的任何函数.
答案一般是否定的,因为在Python中赋值是一个语句,而不是C中的表达式.
在这种情况下,我能看到的唯一区别是你为自己节省了额外的回车,这不是那么有用.赋值和比较惯用法在循环中更有用,但在Python中你只需要在两行中完成(必要时使用break).
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |