5.2Python函数(二)
目录
前言
这一篇式相继上一篇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.说明
首先清楚两个概念:
外部函数:在外出定义的函数。
内部函数:嵌套在一个函数里面的和函数。
闭包函数的定义:(满足三个条件)
- 必须有函数嵌套
- 内部函数引用到外部的变量
- 返回值是内部函数名
注:内部函数需要修改外部变量,需要用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 周一
5.2Python函数(二)的更多相关文章
- python之内置函数(二)与匿名函数、递归函数初识
一.内置函数(二)1.和数据结构相关(24)列表和元祖(2)list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素).tuple:将一个可迭代对象转化成元组(如果是字典,默认将k ...
- c/c++ 图相关的函数(二维数组法)
c/c++ 图相关的函数(二维数组法) 遍历图 插入顶点 添加顶点间的线 删除顶点 删除顶点间的线 摧毁图 取得与v顶点有连线的第一个顶点 取得与v1顶点,v1顶点之后的v2顶点的之后的有连线的第一个 ...
- python---day14( 内置函数二)
内置函数二一:匿名函数 lambda函数 lambda 表示匿名函数,不需要用def 来申明. 语法: 函数名=lambda 参数:返回值 ----〉 案例:f=lambda n:n*n 例子01: ...
- 一款多功能的移动端滚动选择器,支持单选到多选、支持多级级联、提供自定义回调函数、提供update函数二次渲染、重定位函数、兼容pc端拖拽等等..
https://github.com/onlyhom/mobileSelect.js/blob/master/docs/README-CN.md mobileSelect.js 一款多功能的移动端滚动 ...
- C#中的函数(二) 有参有返回值的函数
接上一篇 C#中的函数(-) 无参无返回值的函数 http://www.cnblogs.com/fzxiaoyi/p/8502613.html 这次研究下C#中的函数(二) 有参有返回值的函数 依然写 ...
- python函数知识六 内置函数二、匿名函数与内置函数三(重要)
19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...
- python学习笔记11(函数二): 参数的传递、变量的作用域
一.函数形参和实参的区别 形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数. 实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数. >>> ...
- 函数(二):input、raw_input、lambda、repr、map、filter、reduce、eval、exec、range、xrange
一.input()和raw_input(): input()支持用户输入数字或表达式,按类型存或存表达式的计算结果 raw_input():输入所有内容当成字符串存 二.lambda函数:匿名函数 l ...
- DAY11 函数(二)
一.函数的对象 1.1定义:函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象 1.2函数对象的应用 1 可以直接被引用 fn = cp_fn def fn(): ...
随机推荐
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十七):登录验证码实现(Captcha)
登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验 ...
- 可重入锁 & 不可重入锁
可重入锁指同一个线程可以再次获得之前已经获得的锁,避免产生死锁. Java中的可重入锁:synchronized 和 java.util.concurrent.locks.ReentrantLock. ...
- vector、deque、stack、queue、list以及set的使用
注意:以下测试案例都要加上相应的头文件,必要时要加上algorithm文件. 1.vector 连续存储结构,每个元素在内存上是连续的:支持高效的随机访问和在尾端插入/删除操作,但其他位置的插入/删除 ...
- win32之进程概念
win32之进程 一丶简介 学习WindowsAPI. 之前.我们必须理解什么是进程. 在windows环境下.进程就是一个运行起来的exe程序 进程提供了数据以及资源. 但是怎么使用不管.而是由线程 ...
- MySQL之视图、触发器、事务、存储、函数、流程控制
一.视图 视图就是一个虚拟表,我们把复杂的sql语句后看到的虚拟表封装起来,给他取个名字,当我们下次使用的时候,就不用再去写复杂的sql语句,直接调用封装后的视图名字,就可以得到我们想要的表,然后就可 ...
- CRC 校验原理及步骤
什么是 CRC 校验? CRC 即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计 ...
- .net项目技术选型总结
做.net开发已经几年了,也参与开发了很多大大小小的项目,所以现在希望总结出一套开发.net项目的常用技术,也为以后做项目技术选型的时候作为参考. 数据库 小型项目:SQLite(工具) 中大型项目: ...
- Spring Security之Remember me详解
Remember me功能就是勾选"记住我"后,一次登录,后面在有效期内免登录. 先看具体配置: pom文件: <dependency> <groupId> ...
- Asp.Net MVC学习总结之过滤器详解(转载)
来源:http://www.php.cn/csharp-article-359736.html 一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的 ...
- php5.5之后新特性整理
1 生成器 yield关键字yield的中文文档在这里:http://php.net/manual/zh/language.generators.overview.php查看文档,能知道yield的一 ...