python - python表达式中的临时变量

标签 python functional-programming temporary

一些(很多?全部?)函数式编程语言,如 StandardMLHaskell具有 let ... in ... 形式的表达式类型,可以在表达式本身的范围内创建临时变量。

例子:让a=b*c in a*(a+1)

Python 中似乎没有类似这样的表达式结构。

动机:

例如,lambda 函数的主体必须是(一个)表达式。不是两个表情。不是语句(赋值是语句而不是表达式)。

此外,在 python 中编写函数表达式和一般单行代码时,事情很容易变得困惑(参见 my answerPython 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/

相关文章:

python - 简单的 Django 文件上传无效 :-((

c++ - 是否必须有一个临时的或文字的右值?

c++ - 处理用于构造有用值的旧变量

javascript - 是否有可能在 JavaScript 中创建仿函数?

database - session 是否比查询数据库更快?

python - 在 python 中进行单元测试?

python - 引发异常并从调用者开始进行回溯

python - Pandas 适用,但仅适用于满足条件的行

scala - 在 Scala 中编写 Free monad

swift - 如何处理 reduce 函数的初始 nil 值