【发布时间】:2013-08-15 19:31:28
【问题描述】:
在 python 中,引号运算符的等价物是什么?我发现需要延迟评估。例如,假设在以下 lisp 伪代码中我有:
a = '(func, 'g)
g = something
(eval a)
我正在做的是将g 的评估推迟到以后。这是必要的,因为我想稍后定义g。这个伪代码在python中的等效思路是什么?
【问题讨论】:
-
通常,如果您尝试将某些内容翻译成 Python,并且不知道如何去做,那么您正在做一些非常不符合 Python 的事情,并且需要退后一步才能找到Pythonic 方式来做你真正想做的事情。特别是,任何使用
eval的代码可能一开始就不应该编写。 -
我肯定会在接下来的几天里尝试切换到 clojure...
-
老实说,即使在 Lisp 中,
eval也不是延迟表达式求值的正确方法。通常,您将表达式包装在lambda中并稍后调用它。 Scheme 还提供了delay/force,它提供了lambda的结果的记忆。
标签: python functional-programming lisp quote