我对了解 Python3.x 的新语言设计很感兴趣。
我很喜欢 Python 2.7中的函数 map:
Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]
然而,在 Python 3. x 中,情况发生了变化:
Python 3.5.1
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: <map at 0x4218390>
我知道是怎么回事,但我找不到原因。为什么语言设计者要做出这样的选择,在我看来,这会带来很大的痛苦。这是为了和开发人员在列表理解方面进行“掰手腕”吗?
我的意思是,列表可以很自然地被认为是 函授员; 我也曾经被认为是这样想的:
fmap :: (a -> b) -> f a -> f b