什么是告诉某人"我想要应用于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]
Run Code Online (Sandbox Code Playgroud)
我喜欢选项2; 标准库中是否有一个已经等效的函数?
避免聪明的诱惑.使用选项1,它的意图是明确和明确的; 您正在将函数func()应用于iterable中的每个元素.
选项2只是让每个人感到困惑,寻找walk_for_side_effects应该做的事情(在我意识到你需要map()在Python 3中进行迭代之前,它肯定让我很困惑).
当您实际获得结果时func(),应使用选项3 ,从不使用副作用.Smack任何人只是为了副作用而这样做.列表推导应该用于生成列表,而不是做其他事情.相反,您需要更难理解和维护代码(并且为所有返回值构建列表的启动速度较慢).
| 归档时间: |
|
| 查看次数: |
2108 次 |
| 最近记录: |