我可以在Python中使用“静态”变量的匿名函数吗?我可以在Python中使用“静态”变量的匿名函数吗?
例如
lambda x: re.compile(r'foobar').match(x)
没有那么大,因为它可能会重新编译每次调用时间(如果re
用完缓存 - 谢谢你响应者指出了缓存机制)。
我可以做到这一点无需重新编译:
def f(line):
try:
f.c
except:
f.c = re.compile(r'foobar')
return f.c.match(line)
如何用拉姆达做到这一点,而无需重新编译?
嗯,我不想使用帮助函数,在lambda内部使用。使用lambdas的全部观点是“匿名”。所以是的,lambda是匿名的,并且是独立的。
're'库有一个缓存机制,所以每次调用函数时都不应该编译正则表达式。 –
实际上我不会为此担心。 're'模块内部缓存了100个正则表达式,所以如果你使用的模式不超过100个,那么执行此操作时不会看到任何显着的性能增益 – wim
为什么第二个示例不会重新编译? – hitzg