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'
永远不要在生产环境写这样的代码