第三周-第18章节-Python3.5-函数式编程与函数不同

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。

而函数式编程(请注意多了一个“式”字)——Functional Programming,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算。

我们首先要搞明白计算机(Computer)和计算(Compute)的概念。

在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是最贴近计算机的语言。

而计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远。

对应到编程语言,就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言。

函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!

Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

一、定义

简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。

它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。举例来说,现在有这样一个数学表达式:

  (1 + 2) * 3 - 4

传统的过程式编程,可能这样写:

  var a = 1 + 2;

  var b = a * 3;

  var c = b - 4;

函数式编程要求使用函数,我们可以把运算过程定义为不同的函数,然后写成下面这样:

  var result = subtract(multiply(add(1,2), 3), 4);

这就是函数式编程。

原文地址:https://www.cnblogs.com/pcjbk/p/10990138.html

时间: 2024-08-01 08:32:57

第三周-第18章节-Python3.5-函数式编程与函数不同的相关文章

第三周-第14章节-Python3.5-函数式编程

# pcj#函数def funct1(): '''this is funct1''' print("in the funct1") return 0 #return 表示结束函数与返回值 #过程 过程无返回值 .即可以表达为,过程就是没有返回值的函数def funct2(): '''this is funct2''' print("in the funct2") # 调用:funct1()funct2()x=funct1() # x,表示接到funct1的返回值y=

第三周-第03章节-Python3.5-集合及其运算

# pcjlist_1=[1,2,3,4,5,6,1,4]print(list_1)list_1=set(list_1)print(list_1,type(list_1))list_2=set([1,5,9,8])print(list_1,list_2)#交集print(list_1.intersection(list_2)) #并集 去重之后的print(list_1.union(list_2))#差集 我有你没有的,就叫差集print(list_1.difference(list_2))#

第三周-第06章节-Python3.5-文件读与写详解

对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作 1 2 3 4 5 6 7 8 f = open('lyrics') #打开文件 first_line = f.readline() print('first line:',first_line) #读一行 print('我是分隔线'.center(50,'-')) data = f.read()# 读取剩下的所有内容,文件大时不要用 print(data) #打印文件 f.close() #关闭

第五周-第06章节-Python3.5-内置模块详解之Range模块

如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与random模块中最常用的几个函数的关系,希望你会有所收获,以下就是这篇文章的介绍. random.random()用于生成 用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限.如果a > b,则生成随机数 1 n: a <= n <= b.如果 a <b, 则 b <= n <= a. 1 2 3 4 5 6 print r

第五周-第05章节-Python3.5-内置模块详解之time与datetime模块

# pcjimport time# print(time.localtime())# print(time.time())# #print(help(time)) #获取time的帮助# #time.sleep(1) #睡几秒# print(time.gmtime(10000000000)) # convert seconds since Epoch to UTC tuple 标准时间 utc时区# print(time.localtime()) #convert seconds since E

第一周-第11章节-Python3.5-if else流程判断

# pcj例子一: '''先把用户名与密码存到一个变量,然后与用户输入的对比,如果成立,则打印,欢迎login,else invalid username or password'''_username="pcj" _password="123"username=input("username")password=input("passwrod")if _username==username and _password==pa

第二周-第08章节-Python3.5-列表的使用2

names=["张三","李四","王二","零度雨",["小列表1","小列表2"],"深海","赵云","张三丰"] names2=names.copy() #浅copy names[4][0]="里面的小列表" names[2] = "王小二" print(names) print(

第二周-第11章节-Python3.5-字符串常用操作

# pcjname="xiaoming"# capitalize()# String.capitalize() 将字符串首字母变为大写print(name.capitalize()) #首字母大写# count()# String.count() 统计字符出现的次数print(name.count("i")) #统计i字母有几个 # center()# String.center()打印输出字符,让字符串放在中间print(name.center(50,"

Python自动化开发学习的第三周---python基础学习

本周内容 1.函数的基本语法和特性 2.参数与局部变量 3.返回值 4.递归函数 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 ---------分割线------------ 1.函数的基本语法和特性 函数是什么? 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义 1 def sayhi():#函数名 2 print("Hello, I'm nobody!&