【发布时间】:2019-03-23 05:52:19
【问题描述】:
我有以下代码(简化):
def send_issue(issue):
message = bot.send_issue(issue)
return message
def send_issues(issues):
return [send_issue(issue) for issue in issues]
如您所见,send_issues 和 send_issue 是非纯函数。这被认为是在列表理解中调用非纯函数的好做法(和 Pythonic)吗?我想这样做的原因是这很方便。反对这样做的原因是,当您看到列表推导式时,您希望这段代码只生成列表,仅此而已,但事实并非如此。
更新: 我实际上想创建并返回与question相反的列表。
【问题讨论】:
-
如果您不打算创建列表,我会反对。
-
只要您实际上将生成的列表用作列表(这意味着您正在使用索引来检索生成列表的项目以进行进一步处理,我没有问题。如果如果您打算只迭代列表,请考虑将其设为生成器表达式而不是列表推导式。如果您根本不关心这些项目,那么您应该使用常规的
for循环。 -
我认为这没有任何问题。我说去吧;方法名称简单明了,这意味着如果我查看这段代码,我会很容易知道它的作用。
-
从代码本身来看,
send_issue不是纯的并不明显。它是否发送消息并返回已发送消息的内容?
标签: python list-comprehension side-effects pure-function