【发布时间】:2021-12-18 04:20:53
【问题描述】:
在寻找如何允许列表 append() 方法返回新列表时,我偶然发现了这个解决方案:list.append(val) or list
它非常好,适用于我的用例,但我想知道它是如何做到的。
【问题讨论】:
-
信不信由你,
return list.append(val) or list比list.append(val); return list更多的代码(因此更慢) -
不要这样做,这太荒谬了。
list.append。 总是返回None。你正在利用这个事实。但只需使用两个单独的语句。 -
我可以看到一些你可能想要这样做的罕见情况,比如一个深度嵌套的表达式,你需要在发生一件事之前附加列表,但在另一件事发生之后,但在这种情况下,表达式本身应该大概是被拆散了。毕竟,Python 不是一种纯粹的函数式语言。例如,
foo(bar(baz(), list.append(val) or list))可能与list.append(val); foo(bar(baz(), list))不同,因为它改变了调用list.append和baz的顺序。 -
@chepner 让我这样说,我无法想象任何涉及此的代码通过任何理智的代码审查
-
只是说理智地重写它可能不像仅仅添加一条额外的语句那么简单。
标签: python python-3.x list append