使用 lambda函数
processFunc= collapse and (lambda s:" ".join(s.split())) or (lambda s: s)
processFunc现在是一个函数,但是它到底是哪一个函数还要取决于collapse变量。如果collapse为真,processFunc(string)将压缩空白;否则processFunc(string)将返回未改变的参数。
在一个不很健壮的语言中实现它,像Visual Basic,你很有可能要创建一个函数,接受一个字符串参数和一个collapse参数,并使用if 语句确定是否压缩空白,然后再返回相应的值。这种方式是低效的,因为函数可能需要处理每一种可能的情况。每次你调用它,它将不得不在给出你所想要的东西之前,判断是否要压缩空白。在 Python 中,你可以将决策逻辑拿到函数外面,而定义一个裁减过的lambda 函数提供确切的 (唯一的) 你想要的。这种方式更为高效、 更为优雅,而且很少引起那些令人讨厌(哦,想到那些参数就头昏) 的错误。