美文网首页
函数式编程

函数式编程

作者: Ji_uu | 来源:发表于2017-11-07 00:18 被阅读0次

变量可以指向函数

#函数的调用
>>> abs(-5)
5

#直接写abs则返回函数对象
>>> abs
<built-in function abs>

#定义一个变量f,把它指向abs,对f调用相当于对abs调用
#说明变量可以指向函数
>>> f = abs
>>> f(-8)
8

函数名其实就是指向函数的变量

#这里把abs指向另一个函数,则abs不再是求绝对值的函数了
>>> abs = len
>>> abs(-5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
#可以得到字符串的长度
>>> abs('hehe')
4
#以上说明了函数名和普通的变量没有区别,它指向的只是一个函数对象

高阶函数:能接收函数做参数的函数

  • 变量可以指向函数
  • 函数的参数可以接收变量
  • 一个函数可以接收另一个函数作为参数
  • 能接收函数作参数的函数就是高阶函数

来看一个高阶函数的例子

>>> def add(x, y, f):     #定义一个add函数
...     return f(x) + f(y)
...
>>> add(-7, 9, abs)      #对函数进行调用
16

任务利用add(x,y,f)函数,计算:

#答案
import math

def add(x, y, f):
    return f(x) + f(y)

print add(25, 9, math.sqrt)

map()函数

python中reduce()函数

python中的filter函数

python中自定义排序函数

python中返回函数

python中闭包

  • 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。
  • 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。

python中匿名函数

  • 高阶函数可以接收函数做参数,有些时候,我们不需要显式地定义函数,直接传入匿名函数更方便。
  • 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。
  • 使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码

Python中装饰器

相关文章

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • iOS 函数编程 & 链式编程

    函数式(链式)编程 函数式编程概念 函数式编程是种编程范式 函数式编程 Functional Programmin...

  • 函数式编程(一)—— 前置知识

    为什么要学函数式编程? 什么是函数式编程?函数式编程和面向对象编程的不同对于函数式编程思维方式的理解: 函数式编程...

  • 二十二、函数式编程、面向协议式编程

    函数式编程(Functional Prigramming) 函数式编程 函数式编程(Functional Prig...

  • Python中的函数式编程

    函数式编程 说到函数式编程,我们的重点在于为什么要采用函数式编程,而不是什么是函数式编程。 函数式编程的优点:一、...

  • RxSwift-初探

    函数响应式编程 一:函数式 函数式编程简称FP(Functional Programming),函数式编程就是一种...

  • 《Kotlin入门实战》CH5 | 函数与函数式编程

    函数与函数式编程 函数式编程与命令式编程最大的不同是:函数式编程的焦点在于数据的映射,命令式编程(imperati...

  • 函数响应式编程思想 & RxSwift 核心逻辑(一)

    函数响应式编程思想 函数响应式编程思想即是将函数式编程和响应式编程相结合。 函数式编程 顾名思义,就是像函数一样的...

  • RxJava系列|RxJava简介(一)

    函数响应式编程 函数式编程是一种编程范式。 常见的编程范式有:命令式编程、函数式编程和逻辑式编程。 面向对象就是一...

  • 了解C# 函数式编程

    什么是函数式编程 函数式编程是一种编程范式,维基百科对函数式编程定义如下: 函数式编程(英语:functional...

网友评论

      本文标题:函数式编程

      本文链接:https://www.haomeiwen.com/subject/wdermxtx.html