【发布时间】:2021-02-18 18:32:01
【问题描述】:
遇到一段代码如下,其中workers是类对象的列表:
worker_threads = []
for worker in workers:
worker_fn = lambda worker=worker: worker.run(sess, coord, FLAGS.t_max)
t = threading.Thread(target=worker_fn)
t.start()
worker_threads.append(t)
通常我希望lambda 的语法是lambda x : func(x),但这里的worker=worker 用于什么?
【问题讨论】:
-
它是否有效或是否会导致错误?
-
我相信它就像函数中的任何其他参数一样工作,它将 for 循环
worker设置为 lambda 表达式的默认值 -
它将 lambda 中的
worker的值绑定到执行 lambda 时的值。如果你不这样做,worker的值将随着for循环的迭代在所有 lambda 中发生变化。 -
让我看看我能不能想出一个最小的例子作为一个实际的答案......