zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python - 函数式编程

Python编程 函数
2023-09-14 09:00:40 时间

一句话来简单地理解:函数式是一种编程范式,就是只用纯函数来编写程序。
特别说明:函数(function)不等于函数式(functional)。

定义

Functional programming:https://en.wikipedia.org/wiki/Functional_programming
In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.

一些概念

  • 纯函数(Prue Function):没有副作用的函数,也称为函数的纯粹性(Purity)。副作用是指状态的变化(mutation),例如:修改全局变量、抛出异常、IO读写、调用有副作用的函数等
  • 引用透明(Referential Transparency):对相同的输入,总是得到相同的输出。如果f(x)的参数x和函数体都是引用透明的,那么函数f是纯函数。
  • 不变性(Immutability):为了获得引用透明性,任何值都不能变化
  • 函数是一等公民(First-class Function):一切都是计算,函数式编程中只有表达式,变量和函数都是表达式。
  • 高阶函数(Higher order Function):可以作为其他函数的输入或输出的函数
  • 闭包(Closure):代码与用到的非局部变量的混合,即:闭包 = 代码 + 用到的非局部变量
  • 表达式求职策略:严格求值(例如Call By Value)和非严格求值(Call By Name)
  • 惰性求值(Lazy Evaluation):定义表达式时不会立刻求值,只有当第一次调用时才会去求值。
  • 递归函数(Recursive Function):递归实现循环,为避免性能问题可以使用尾递归(Tail Recursion)

函数式编程的优点

  • 生产效率高:代码量简洁
  • 易于推理(Reasoning):固定的输入必然导致规定的输出,调试方便
  • 适用于并行编程、多核计算、云计算:具备引用透明性

Python中的函数式编程

参考信息