python map中的副作用(python“ do”块)

发布于 2021-01-29 17:24:59

告诉某人“我希望将其应用于func每个元素iterable的副作用”的首选方式是什么。

# Option 1... clear, but two lines.
for element in iterable:
    func(element)

# Option 2... even more lines, but could be clearer.
def walk_for_side_effects(iterable):
    for element in iterable:
        pass

walk_for_side_effects(map(func, iterable))  # Assuming Python3's map.

# Option 3... builds up a list, but this how I see everyone doing it.
[func(element) for element in iterable]

我喜欢选项2;标准库中是否有已经等效的函数?

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    避免聪明的诱惑。使用选项1,其意图是明确而明确的;您正在将该函数func()应用于可迭代的每个元素。

    选项2只是使每个人困惑,寻找walk_for_side_effects应该做什么(这使我感到困惑,直到我意识到您需要map()在Python
    3中进行迭代)。

    当您实际从中获得结果时func(),应该使用选项3 , 切勿
    产生副作用。杀死任何这样做的人都是为了副作用。列表推导应该用于生成列表,而不是做其他事情。相反,您会更难以理解和维护代码(并且为所有返回值构建列表的启动速度较慢)。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看