问题
今天测试 xnote 在Python 2.7兼容性的时候,发现一个功能不能使用了,但是Python3下面却运行很好。
具体表现是这样,我有一个search模块,它会去加载search目录下的子模块并且把它们注册到一个映射表中,用户输入查询条件之后会通过映射表的pattern匹配,匹配上了就执行相应的方法执行搜索动作。写成伪代码如下
mappings = []
reg_infos = [
(r"([a-zA-Z]+)", "translate.search"),
(r"(.*[0-9]+.*)", "calculator.search")
]
def init():
for pattern, modname in reg_infos:
mod = import_mod(modname)
mappings.append((pattern, mod.search))
def search(key):
result = []
for pattern, func in mappings:
if re.match(pattern, key):
result += func(key)
return result
有一个很奇怪的现象是 Python2.7 下面calculator执行很正常&#