目录

前言

这一篇式相继上一篇5.1Python函数(一)的进阶文章。

一个重要的思想是:我们把”函数名“当成一个变量来处理。

(一)偏函数

1.说明

偏函数:在不修改原函数的原函数前提下,修改函数的默认值,新建的函数叫偏函数。

2.原代码

# 定义一个有默认值的函数
def test1(a, b, c, d=1):
print(a+b+c+d) # 现在有一个需求,想把默认值改为c=2,d=3
# 我们需要在重新构造一个全新的函数?
# 不需要,下面的定义类似类的继承,也就是偏函数的定义
def test2(a, b, c=2, d=3):
test1(a, b, c, d) # 调用偏函数
test2(1, 2)

3.显示效果

(二)高阶函数

1.说明

函数名也是一个变量,也可以通过赋值,传递给其他变量。

当函数的形参接收的是一个函数名的时候,则称该函数是高阶函数

2.源代码

# 动态的计算两个数
def caculate(num1, num2, caculatefun):
result = caculatefun(num1, num2)
print(result) # 求差函数
def mysum(a, b):
result = a + b
print("求和函数")
return result # 求和和函数
def mysub(a, b):
result = a - b
print("求差函数")
return result # 调用高级函数
caculate(4, 2, mysum)
caculate(4, 2, mysub)

3.运行效果

(三)返回值函数

1.说明

当函数的返回值是:一个函数名称时,我们称返回值函数

2.源代码

# 定义一个返回值函数
def get_fun(symbol):
# 子函数求和
def my_sum(a, b):
return a+b # 子函数求差
def my_sub(a, b):
return a-b # 根据判断返回不同的函数名
if symbol == "+":
return my_sum
elif symbol == "-":
return my_sub # 调用返回函数
func = get_fun("+")
result = func(1, 2)
print(result)

3.运行效果

(四)匿名函数

1.说明

没有名字的函数,我们称匿名函数,也称lambda函数。

语法:lambda var1, var2,……:表达式

注意:只能写一个表达式,而且只能用一次。

2.源代码

# 定义一个匿名函数
func = lambda x, y: x + y
result = func(1, 2)
print("结果是:", result)

3.运行效果

(五)闭包函数

1.说明

首先清楚两个概念:

外部函数:在外出定义的函数。

内部函数:嵌套在一个函数里面的和函数。

闭包函数的定义:(满足三个条件)

  1. 必须有函数嵌套
  2. 内部函数引用到外部的变量
  3. 返回值是内部函数名

注:内部函数需要修改外部变量,需要用nolocal 声明

2.源代码

# 定义一个闭包函数
def test(a):
b = 2
def test2():
nonlocal b
b = 5
print("a:", a)
print("b:", b)
return test2 # 调用闭包函数
fun = test(1)
fun()

3.运行效果

作者:Mark

日期:2019/02/04 周一

最新文章

  1. 【笔记】读取properties文件
  2. mysql分组函数
  3. Use Excel Pivot Table as a BI tool
  4. 过滤文本文档中的数据并插入Cassandra数据库
  5. C#通过代码注册COM组件
  6. Red Hat TimesTen安装记录
  7. webpack之基础学习
  8. USG 2210
  9. jquery.post用法补充(type设置问题)
  10. flask扩展模块flask-sqlachemy 的使用---mysql数据库
  11. qt5.7.1 (create4.2.0)+msvc2015 安装后无法编译 & 缺少h文件
  12. 浏览器解析JavaScript的原理
  13. Python玩转Arduino——简单介绍
  14. JSON 解析 (三)—— FastJSON与Jackson比较
  15. Hibernate(4)简单的HelloWorld
  16. [Web 前端] VML、SVG、Canvas简介
  17. 计算机上面常用的计算单位 & 个人计算机架构与接口设备
  18. VBA学习笔记(4)--文件夹和文件遍历一层
  19. ubuntu 16.04安装Chrome离线crx插件包
  20. HDU 3790(两种权值的迪杰斯特拉算法)

热门文章

  1. dart之旅(一)
  2. 串口USB单一映射及重命名
  3. Code Complete-13/7/29
  4. python 装饰方法
  5. swagger 常用注解说明
  6. 第4章 ext文件系统机制原理剖析
  7. JavaScript之读取和写入cookie
  8. 清除电脑垃圾.bat
  9. Redis基础认识及常用命令使用(一)--转载
  10. 【Java】模拟Sping,实现其IOC和AOP核心(二)