为何Python的min()在可迭代对象仅含一个元素时仍调用key函数?
Python内置min/max/sorted在单元素可迭代对象时仍调用key函数的疑问
Python内置函数min()哪怕可迭代对象里只剩一个元素,还是会执行指定的key函数:
foo = ['2'] def key_func(value): print("Key function called") return int(value) print(min(foo, key=key_func))
运行结果:
Key function called 2
max()和sorted()也存在一模一样的现象。
为什么不对len(iterable) == 1的情况做优化?要是key_func是计算成本极高的操作,这时候调用它完全没有意义。
我查过Python官方文档,没找到关于这个行为的解释;但我觉得肯定有合理的原因,毕竟Python核心开发团队在定义和论证语言及标准库行为时一向非常严谨。
内容的提问来源于stack exchange,提问作者michael_kaeppler
相关产品推荐
相关产品推荐

