模块级函数
Posted 七月的尾巴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块级函数相关的知识,希望对你有一定的参考价值。
你不一定要产生一个 RegexObject
对象然后再调用它的方法;re 模块也提供了顶级函数调用如 match()、search()、sub() 等等。这些函数使用 RE 字符串作为第一个参数,而后面的参数则与相应 RegexObject
的方法参数相同,返回则要么是 None 要么就是一个 MatchObject
的实例。
#!python
>>> print re.match(r‘From\s+‘, ‘Fromage amk‘)
None
>>> re.match(r‘From\s+‘, ‘From amk Thu May 14 19:12:10 1998‘)
<re.MatchObject instance at 80c5978>
Under the hood, 这些函数简单地产生一个 RegexOject 并在其上调用相应的方法。它们也在缓存里保存编译后的对象,因此在将来调用用到相同 RE 时就会更快。
你将使用这些模块级函数,还是先得到一个 RegexObject
再调用它的方法呢?如何选择依赖于怎样用 RE 更有效率以及你个人编码风格。如果一个 RE 在代码中只做用一次的话,那么模块级函数也许更方便。如果程序包含很多的正则表达式,或在多处复用同一个的话,那么将全部定义放在一起,在一段代码中提前编译所有的 REs 更有用。从标准库中看一个例子,这是从 xmllib.py 文件中提取出来的:
#!python
ref = re.compile( ... )
entityref = re.compile( ... )
charref = re.compile( ... )
starttagopen = re.compile( ... )
以上是关于模块级函数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用模块化代码片段中的LeakCanary检测内存泄漏?
Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)