当我尝试使用lambda表达式中的del来精简线程列表时,我注意到了一个问题。
这意味着我正在使用这个解决方法:
那么这个限制只是因为del()不返回值吗?为什么不呢?
我正在使用Python 2.6.2。
map(lambda x: del(x) if not x.isAlive() else x, self.threads)
先不考虑这段代码没有实际作用,我只是在玩弄map、reduce和lambda。
这个代码在del(x)处出现语法错误。经过一些尝试,我认为问题在于del()不会返回值。例如,下面的代码也会出现相同的错误:
b = 5
x = del(b)
然而,这并不包括:
def rmThis(x): del(x)
这意味着我正在使用这个解决方法:
map(lambda x: rmThis(x) if not x.isAlive() else x, self.threads)
那么这个限制只是因为del()不返回值吗?为什么不呢?
我正在使用Python 2.6.2。
del
删除线程对象吗?如果可以交给引用计数器或垃圾回收器处理,那么可以这样写:[thread for thread in self.threads if thread.isAlive()]
。 - Tamás