gpt4 book ai didi

Python del() 内置不能用于赋值?

转载 作者:太空狗 更新时间:2023-10-29 20:36:17 28 4
gpt4 key购买 nike

当我尝试在 lambda 中使用 del 将线程列表精简为仅运行的线程时,我注意到了一个问题:

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 is a statement而不是表达式。它不会“返回值”,因为语句不会在 Python 中返回值。

lambda 形式只允许你提及表达式(因为在表达式之前有一个隐含的return),而def 形式允许要在一行中指定的单个语句函数(就像您对 rmThis 所做的那样)。

通常 del 不带括号使用,如:

del x

但是,允许将参数作为 del(x) 括起来,但这并不意味着它是一个函数调用。

关于Python del() 内置不能用于赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2895629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com