一些(很多?全部?)函数式编程语言,如 StandardML和 Haskell具有 let ... in ...
形式的表达式类型,可以在表达式本身的范围内创建临时变量。
例子:让a=b*c in a*(a+1)
Python 中似乎没有类似这样的表达式结构。
动机:
例如,lambda
函数的主体必须是(一个)表达式。不是两个表情。不是语句(赋值是语句而不是表达式)。
此外,在 python 中编写函数表达式和一般单行代码时,事情很容易变得困惑(参见 my answer 到 Python 2 list comprehension and eval)。
这种构造的要点是避免重复(有时会导致重新计算),例如 l[:l.index(a)]+l[l.index(a)+1: ]
而不是假设的 let i=l.index(a) in l[:i]+l[i+1:]
如何在python2/python3中实现类似的语言特性?
最佳答案
这不是真正地道的代码,但对于单个表达式,您可以使用立即调用的 lambda。您的示例如下所示:
>>> b, c = 2, 3
>>> (lambda a: a * (a + 1))(b * c)
42
如果这有助于提高可读性,您也可以使用关键字参数来编写:
>>> (lambda a: a * (a + 1))(a=b * c)
42
关于python - python表达式中的临时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30990397/