【发布时间】:2013-05-15 08:02:33
【问题描述】:
我想将一个变量分配给多次调用的 lambda 范围。每次都有一个新的变量实例。我该怎么做?
f = lambda x: x + var.x - var.y
# Code needed here to prepare f with a new var
result = f(10)
在这种情况下,我想为每次调用替换 var 而不将其作为第二个参数。
【问题讨论】:
-
不要使用
lambda,使用常规函数,你应该觉得没有必要尽可能使用lambdas -
一般来说,如果 lambda 足够复杂,以至于您必须询问如何扭曲它来完成任务,只需使用常规的 'def' 函数。这将导致它的代码更具可读性、可维护性。
-
@jamylak 我同意。但是 lambda 或常规函数,我不确定 OP 想要如何完成他的要求。如何在不使用参数的情况下更改函数范围内的内容?
-
如果有帮助,您可以将 lambda 替换为常规函数。我只需要以某种方式操纵函数局部变量/闭包。
-
How to modify the local namespace in python 或 How to dynamically modify a function's local namespace? @JonathonReinhart 的可能重复项有几种方法,但在这些链接中没有看到干净的方法