都知道 Python 是一门用途广泛、易读、而且容易入门的编程语言。
但同时 Python 语法也允许我们做一些很奇怪的事情。
使用 lambda 表达式重写多行函数
众所周知 python 的 lambda 表达式不支持多行代码。但是可以模拟出多行代码的效果。
def f(): x = 'string' if x.endswith('g'): x = x[:-1] r = '' for i in xrange(len(x)): if x[i] != 'i': r += x[i] return r f() -> 'strn'
虽然看起来很奇怪,但是上面的函数可以使用下面的 lambda 表达式函数代替:
(lambda: ([x for x in ['string']], x.endswith('g') and [x for x in [x[:-1]]], [r for r in ['']], [x[i] != 'i' and [r for r in [r+x[i]]] for i in xrange(len(x))], r)[-1])() -> 'strn'
永远不要在生产环境写这样的代码