β

鲜为人知的 Python 语法

程序师 47 阅读

所有人(好吧,不是所有人)都知道 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'

永远不要在生产环境写这样的代码

作者:程序师
用程序师的眼光看世界
原文地址:鲜为人知的 Python 语法, 感谢原作者分享。

发表评论