def re_replacer(pattern, replacement, flags):
 import re
 reobj = re.compile(pattern, flags)
 return lambda x: reobj.sub(replacement, x)

こんなのは普通にクロージャと言っていいんじゃないの。