【发布时间】:2016-12-23 09:18:10
【问题描述】:
我喜欢蟒蛇。但是,让我有点烦恼的一件事是,我不知道如何像 javascript 中的罐头那样以流畅的方式格式化功能活动。
例子(现场随机创建):能不能帮我把这个转换成python看起来流利的样子?
var even_set = [1,2,3,4,5]
.filter(function(x){return x%2 === 0;})
.map(function(x){
console.log(x); // prints it for fun
return x;
})
.reduce(function(num_set, val) {
num_set[val] = true;
}, {});
我想知道是否有流动选项?也许是一个图书馆。
一般来说,我一直在对大多数事情使用列表推导,但如果我想打印,这是一个真正的问题
例如,如何使用列表理解在 python 2.x 中打印 1 - 5 之间的每个偶数(Python 3 print() 作为函数,但 Python 2 没有)。构造并返回列表也有点烦人。我宁愿只是 for 循环。
【问题讨论】:
-
只使用一个循环。函数式表示法会发出强烈的信号,表明您正在做一些没有副作用的事情,这是您不想为打印等操作发送的信号。
-
答案是不要使用理解来打印。理解是一种功能性结构,因此,当人们看到理解时,他们并不期望有副作用。
-
您遇到了麻烦,因为您提供的示例代码做了各种非功能性的事情
-
Python 用户不喜欢(或不关心)fluent interface。他们在任何地方都使用函数组合(将来还会更多)。他们声称流利的界面是非功能性的(我不同意这一点),所以要么忘记流利的界面,要么使用另一种适用于流利界面的语言。
-
Python 在这方面完全没有把握。我们中的许多人不得不使用这种语言来访问(伟大的)科学、统计和绘图库。语言本身从根本上被破坏了:它不支持集合操作的链接。
标签: python functional-programming fluent