使用JavaScript中的高阶函数概念,用Python编写纯函数代码
Write pure and functional code in Python using the concept higher-order functions like in JavaScript
如何在Python中使用高阶函数(返回其他函数的函数)?
这是我的JavaScript示例,我也想在Python中使用它的编程概念。比方说,我想把一个字符串包装在一个HTML元素中。在JavaScript中,它看起来像这样:
var wrapInElement = function(ele) {
return function(inp) {
return "<" + ele + ">" + inp + "</" + ele + ">";
};
};
然后我会这样使用它:
var names = ["Mike", "Tony", "John"];
names.map(wrapInElement("p"));
这在Python中是什么样子的?有没有一种方法可以像上面的例子一样编写返回自定义函数的函数?也可以用Python编写一个类来完成这项任务,但对于这样一个基本任务来说,这不是太多了吗?
在python中,函数是一流的公民,就像在javascript:中一样
def adder(n):
def add_func(x):
return x + n
return add_func
add3 = adder(3)
print map(add3, [1,2,3]) # [4, 5, 6]
这不是唯一的选项,例如adder
也可以写成:
def adder(n):
return lambda x: x + n
请注意,函数风格并不完全是Python风格,在可能的情况下,我们更喜欢理解和生成器,而不是高阶函数:
wrapped = ["<p>{}</p>".format(name) for name in names]
您的JavaScript示例可以使用部分应用程序重写(可以说更干净)
// depends on `_` -- see link above
function wrapInElement(ele, inp) {
return "<" + ele + ">" + inp + "</" + ele + ">";
};
var f = _.partial(wrapInElement, "p")
... then use f as a normal function ...
在Python中也是如此:
from functools import partial
def wrap_in_element(ele, inp):
return "<%s>%s</%s>" % (ele, inp, ele)
f = partial(wrap_in_element, "p")
... then use f as a normal function ...
是的,在Python和JavaScript中都可以使用高阶函数,如果你发现自己返回函数来滚动自己的部分应用程序机制,你应该意识到,由于有很棒的库,这种丑陋(出现在两种语言的示例中)是不必要的。
相关文章:
- 回调函数在python代码中离线
- 调用Javascript中的Python函数,读取静态文件(Flask)
- 在字典中存储函数[Python]
- 如何在新创建的模块中从Odoo v8中的Javascript文件中调用python函数
- 为什么模块化幂函数在 Python 和 Javascript 中对于大数字的工作方式不同
- 如何在 Python 中获取此 JavaScript 函数的返回值
- 用javascript调用python函数,并在网页上显示返回的字符串
- python函数调用javascript自动完成
- 使用JavaScript中的高阶函数概念,用Python编写纯函数代码
- 使用没有URL的python脚本从网页下载文件,调用onClick函数
- Javascript vs Python 关于 Python 'map()' 函数
- python中的闭包.我可以在函数的本地上下文上关闭吗?
- 如何将用python编写的函数编译为JavaScript(emscripten)
- 将 python list 传递给 javascript 函数
- 从python Appengine中的Javascript函数中检索变量
- 如何在 Python 中的变量中存储子变量和函数
- 如何使用 QT/Python 从 Javascript 调用C++函数
- 从 python 中的 Javascript onclick 函数下载文件
- 有没有其他方法可以在纯python中实现javascript的onClick()函数
- Python有办法通过函数传递参数吗