Python学习(二)——函数式编程
2017-01-12 14:30
344 查看
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。
函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。
>>> f = abs
>>> f(-123)
123
编写高阶函数,就是让函数可以接收别的函数作为参数。
函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。
一:高阶函数
函数本身可以赋值给变量。即变量可以指向函数。这样可以通过变量来间接调用函数>>> f = abs
>>> f(-123)
123
二:函数名也是变量
函数名其实就是一个指向函数的变量,例如上边的abs,就是abs这个变量指向了一个可以计算绝对值的函数。如果把abs指向其他对象,结果如何呢?>>> abs = -10 >>> abs(-123) Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> abs(-123) TypeError: 'int' object is not callable把abs指向-10之后,就无法通过abs(-123)来调用该函数了。因为abs指向了-10,而不是求绝对值的函数。
三:传入函数
既然变量可以指向函数,而函数又可以接受变量作为参数,那么一个函数就可以接收另一个函数作为参数,这种函数就称为高阶函数。#!/usr/bin/python #coding:utf-8 def add(x, y, f): return f(x) + f(y) print add(-10,9,abs)结果显示为19,当调用add(-10,9,abs)时,-10传给x,9传给y,abs传给f,即add的结果是求abs(x)+abs(y),即结果为19.
编写高阶函数,就是让函数可以接收别的函数作为参数。
相关文章推荐
- python学习笔记(四) - 函数式编程
- Python学习----函数式编程
- Python学习笔记2:函数式编程
- 【python学习】之二、函数式编程
- 【python学习】之二、函数式编程
- Python学习_08_函数式编程
- python学习 函数式编程
- python学习——函数式编程
- Python基础学习代码之函数和函数式编程
- 【Python学习笔记】函数式编程:高阶函数sorted
- Python 函数式编程学习
- python学习(3)函数式编程
- Python学习笔记——函数式编程
- 【Python学习笔记】函数式编程
- Python函数式编程学习:lambda, map, reduce, filter
- python2.7学习笔记(7) ——函数式编程
- 王亟亟的Python学习之路(八)-函数式编程,map(),reduce(),filter()
- 王亟亟的Python学习之路(八)-函数式编程,map(),reduce(),filter()
- 【Python学习笔记】函数式编程:高阶函数map和reduce
- 【Python学习笔记】函数式编程:高阶函数