python相当于lisp中的引用

Cod*_*lus 4 lisp python functional-programming quote

在python中,什么是引用运算符的等价物?我发现有必要推迟评估.例如,假设我在下面的lisp伪代码中有:

a = '(func, 'g)
g = something
(eval a)
Run Code Online (Sandbox Code Playgroud)

我正在做的是将评估推迟g到以后的时间.这是必要的,因为我想g稍后定义.在python中这个psuedocode的等价思想是什么?

use*_*ica 8

a = lambda: func(g)
g = something
a()
Run Code Online (Sandbox Code Playgroud)

这不是最直接的翻译 - 最直接的翻译会使用字符串eval- 但它可能是最合适的.无论如何,引用可能不是你想要的Lisp; 你可能想要delay什么或创造一个lambda.请注意,funcg在封闭变量lambda函数,而不是符号,因此,如果调用a从环境与不同的绑定func或者g,它仍然将使用从变量a的定义的环境.

  • +1正如我在OP中所提到的,即使在Lisp中,"eval"也是大多数问题的错误答案,包括延迟评估.(编辑:你只是做了一个编辑来说同样的事情.:-D) (4认同)