是否应该使用正则表达式的Pythonic"标准"?
我通常做的是在我的模块顶部执行一堆re.compile语句并将对象存储在全局变量中......然后在我的函数和类中使用它们.
我可以在我将使用它们的函数中定义正则表达式,但是每次都会重新编译它们.
或者,我可以完全放弃re.compile,但如果我多次使用相同的正则表达式,似乎重新编译会产生不必要的开销.
一种更清洁的方法是使用字典:
PATTERNS = {'pattern1': re.compile('foo.*baz'),
'snake': re.compile('python'),
'knight': re.compile('[Aa]rthur|[Bb]edevere|[Ll]auncelot')}
Run Code Online (Sandbox Code Playgroud)
这将解决您的污染命名空间的问题,而且对于任何查看代码的人来说,显而易见的是PATTERNS是什么以及将用于什么,并且它满足全局变量的CAPS约定.此外,您可以轻松调用re.match(PATTERNS[pattern]),或者您的逻辑调用.