高阶函数

Python基础——函数入门

不羁的心 提交于 2021-01-02 23:38:13
一、函数的定义 1、函数的格式 def 函数名(参数): 例如: def a(x,y): 函数代码块以 def关键字开头,+函数名(参数)冒号。回车后,第一行内容应该缩进,然后写逻辑代码。 2、return关键字 代表函数执行完返回的值 pass关键字 代表什么都不做 exit() 强行退出 3、函数的参数 参数 *args 代表tuple类型(即:一个*代表是tuple类型) 参数 **kwargs 代表dict 字典类型(即:两个**代表是dic类型) 4、简单举例:(加法计算) 结果: 5、匿名函数lambda 匿名函数就是没有名字的函数,为什么设置匿名函数呢? lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方。 例如: def fun(x,y) 等同于 r = lambda x,y:x*y return x*y 二、高阶函数 1、map(fun,list) 接收一个函数fun 和一个list,并通过函数 fun 依次作用在list的每个元素上,得到一个新的list并返回。 map() 函数不改变原有的list,而是返回一个新的list。 因为list可以包含任意类型的元素,因此map函数可以包含任意类型的list,只要fun函数可以处理即可。 Python2 例如: Python2 结果: Python3 例如: Python3 结果: 注意

JavaScript函数之高阶函数

喜欢而已 提交于 2020-02-29 07:30:46
高阶函数(higher-order function)—如果一个函数接收的参数为或返回的值为函数,那么我们可以将这个函数称为高阶函数。众所周知,JavaScript是一种弱类型的语言:JavaScript的函数既不对输入的参数,也不对输出值作强定义和类型检查,那么函数可以成为参数,也可以成为输出值,这就体现了JavaScript对高阶函数的原生支持。 一、参数为函数的高阶函数: function funcTest(f){ //简易判断一下实参是否为函数 if((typeof f)=="function"){ f(); } } funcTest(function(){ }); 这是一个简易的将参数作为函数的高阶函数。在调用funcTest时,输入一个函数作为参数,在funcTest内部执行这个输入的匿名函数,当然这样的代码片段没有什么实际意义。 二、返回值为函数的高阶函数: function funcTest(){ return function(){ }; } var f=funcTest(); 调用funcTest返回一个函数。 三、一个复杂一点的例子: //Number类型相加 function addInt(a,b){ return parseInt(a)+parseInt(b); } //String类型相加 function addString(a,b){ return

Scala 高阶函数(high-order function)剖析

青春壹個敷衍的年華 提交于 2019-12-22 20:03:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Scala 是一种函数式编程语言,也就是说每一个函数都是一个值。Scala 有很简洁的语法用于定义匿名函数、curry 化函数(curried function)、应用函数、偏函数以及嵌套函数等。函数式编程由数学函数演变得来,包含大量诸如串联与并联、组合与分离、协变与逆变等一系列概念。本文将就如何实现高阶函数进行阐述,其他部分内容不进行深究。 类型参数化协变与逆协变 类型参数化(type parameterization)由类型协变性(Type variance)补充构成,类型协变性的机制则是在类型系统中通过指定诸如协变性(convariant)和逆协变性(contravariant)进行约束。子类型的关系给协变带来了问题——在类型参数化中,子类型之间是什么关系?在Scala中,你可以通过class和trait实现参数化。当在class和trait中使用类型参数时,你可以使用 + 号实现协变。类型协变(Convriance)允许对其父类的协变位置中(如返回值)进行重载和使用狭义类型。即 Scala 允许通过“+/-”定义类型参数的协变性, 用“+”放在类型参数前表示构造子对于该参数是协变的; “-”则表示逆协变; 没有任何符号则表示非协变。 协变相当于Java的泛型T,反之则不成立,逆协变不是类型的强制转换

Common Lisp 高阶函数学习笔记: function, funcall 和 apply...

孤街醉人 提交于 2019-12-07 21:49:58
Common Lisp 高阶函数学习笔记: function, funcall 和 apply 的用法 目录 0 概述 1 函数 function 的用法 2 函数 funcall 的用法 3 函数 apply 的用法 0 概述 高阶函数是 Lisp 的一大特色, 所谓的高阶函数就是把一个函数当做另一个函数的参数来用, 如果把普通的函数调用看做是在二维平面上的活动, 那么高阶函数就相当于增加了一个维度:可以把高阶函数看做在三维立体空间的活动. 一般来说, 编程语言需要这种机制, 因为这样可以为开发者提供更灵活更高级的结构抽象能力, 正如<实用 Common Lisp 编程>中所说: 在 C 语言中使用函数指针, Perl 使用子例程引用, Python 跟 Lisp 一样, C# 使用代理, Java 则使用反射和匿名类. 高阶函数的一个应用场景是通用排序, 比如 Lisp 的函数 sort , 调用形式如下: (sort '(6 2 5 3 7 0) #'>) 我们可以选择不同的比较函数(就是 #' 后面的 >), 这样的实现就比较灵活, 当我们想换一个比较函数, 如换成 < , 我们并不需要修改 sort 的代码, 只要新写一个 < 函数, 然后把它作为 sort 的参数传递进去就可以了. 另外回调函数和钩子也能够保存代码引用以便于以后运行. 1 函数 function 的用法