当前课程知识点:计算思维与人工智能基础 > 第三部分:python基础 > 第六章:函数、模块与面向对象 > 6.1函数的定义与调用
大家好
下面我们给大家介绍第六章
Python的程序
这章呢我们主要给大家介绍
函数
面向对象
模块的应用
函数里面呢
我们主要给大家介绍函数的定义及调用
包括我们的匿名函数
还有一些内置函数的介绍
还有魔法函数的应用
以及面向对象中的类的概念
以及面向对象的三个主要的特征
封装
继承
多态在重启中的体现以及模块的导入
函数
函数是组织好的
可重复使用的
用来实现单一或者相关联功能的代码段
Python中函数其实质就是计算思维中的模块设计概念
Python中的函数分为
内置函数
标准库函数
第三方库函数
和自定义函数四大类
函数的定义规则
那我们来看这段代码
函数的代码块是以def关键词开头的
那么后面跟我们函数的名称
括号里面是我们函数的参数
从冒号开始呢
后面是我们函数的内容
函数的内容需要缩进
那我们定义好函数以后呢
调用的时候就通过函数名
然后带我们的实参
这个就是我们的调用
那def
a
这样m,n
这是我们的函数的定义
a带了实参小孙Python就是我们的函数的调用
那有的时候呢
在函数里面可以带return表达式
那这个时候呢
是可以返回值给我们的调用者
在Python中函数是与其他数据类型
比如说int等等是处于平等地位的
因而我们可以将函数赋值给变量
也可以将其作为参数传入其他函数
将它们存储在其他的数据结构
比如说字典中
并将它们作为其他函数的返回值
我们来看这个代码段
那我们上面是定义了一个foo这样的一个函数
它的函数内容就是输出X的平方
那我们可以把这个函数的foo赋值给一个bar
这样的一个变量
那么bar一样像函数一样应用的时候
他也可以给一个参数就可以进行调用
再来看我们这个函数的定义
定义了个iterate
那么它的里面的参数是一个列表
他的函数的内容都是通过for循环
输出列表里面的元素
下面的我们可以看到给了一个列表list1
然后通过iterate把它调用输出
我们再看下面这个代码段
那么这个函数iterate_custom
那他也有两个参数
一个是列表
一个是foo
那么我们可以看到从列表中取出来元素
通过foo函数来去调用返回结果
那我们在这个里面呢foo这个函数
就是作为一个参数传入到iterate这个函数里面
那我们可以看到它的调用结果
list1,foo
那么list1就是我们上面这个list[1,3,5,7,9]
那我们通过foo函数使每一个元素求了平方输出
是这样的一个结果
内置函数
Python里面有许多的内置函数
那么一种是系统默认的一些内置函数
比如说print呀
input呀
那还有一些呢
是可以通过list啊
都是可以系统直接就可以使用的
那还有一部分呢
是可以通过我们导入函数的模块
那他也可以使用
那我们这些函数的都称之为
在这是在模块里面的内部的函数啊
那这个里面的在使用的时候就非常方便啊
那么输入以后他就可以执行这样子的结果输出
lambda函数我们也称之为匿名函数
它的语法结构是lambda后面跟参数列表
冒号后面跟我们的表达式
那么这个函数的特点就是它缺省的函数名啊
那这个参数列表就是他的输出
表达式就是他的输入
它可以实现一些简单功能的函数
那我们来看
如果我们要写一个函数计算a和b
我们看如果用正常的函数定义
和lambda函数有什么区别呢
那么正常还是我们就可以定义一个函数
sum1然后参数是a,b
然后通过return返回这个表达式a加b
那调用的时候通过sum1给实参
那就可以使用这个函数了
如果用lamdba函数呢
他写起来就更简洁一些
那么lambda后面直接跟参数a,b
返回a加b
使用的时候也非常方便
这就是lambda函数的使用
那除了这些呢
我们可以看到lambda函数它是比较灵活的
它可以与其他的一些函数联合使用啊
比如说我们这个地方可以开
可以看到他跟sorted函数跟filter函数
跟map函数跟reduce函数呢
都可以结合使用
下面我们在这jupyter下看一下
lambda函数和其他的函数的一些嵌套的使用
我们来看刚才我说的那个
lambda函数和sorted函数的使用
sorted数是一个排序函数
那么他这个括号里面的参数list是要排序的列表
那么key就是按照我们这个函数来进行排序
那么reverse呢是排true的话
他就是一个逆序
false呢他就是一个升序
是这样子的
那我们来看lambda函数时输入是X
那他的表达式是我们的一个什么绝对值X
他们也就说这个排序是按照绝对值
来对我们这个list1表的排序
我们看一下他的运行结果
那么可以看得到他是按照我们的绝对值来进行排序
那么下面这个lambda与filter的嵌套的使用
那么filter他是一个过滤的这样的一个函数
那么按照list也就是我们后面这个这个列表
是按照前面的这个函数来进行过滤
然后输出的
那么这是列表呢是list1
过滤的条件就是我们这个lambda函数x小于0
那么也就把X小于0的然后通过filter函数过滤
然后输出
我们运行一下一看
那满足这个条件的就是小于0的输出
再下面看这个与lambda函数与map的联合的使用
那么map的函数是也是通过我们前面这个函数
对于后面这两列表
那么在这个地方用的都是列表一
列表
那么这两个列表呢
就分别取第一个列表取出x第二个列表取出来是y参数
然后把它进行求和
那么在这个呢就是相当于这个列表的每个元素进行
和自己求和
然后输出转换为list
我们可以看它的运行结果是
相当于我们这个list1的这个列表啊
那么1
1+1
-2+-2
4,12,-10这样的一个输出结果
我们再来看一下lambda函数与reduce的一个嵌套的使用
那么reduce是一个求总和的
那这样的话
我们可以看到他是从这个列表中里面取两个元素求和
求的和再与下一个元素求和
是这样的一个过程
那我们一看list1
然后通过lambda函数
再用reduce函数求总和输出的结果是什么样子的
我们可以看他输出是一个0
那他的求和的过程就是
前两个求和再跟第三个第四个那么求出来
正好就是0
这就是我们lambda函数和一些其他函数的嵌套的使用
我们看起来是非常灵活的
那么除了这个呢
我们再看一下我们这个
就是函数呢是可以作为其他的函数
那么这个前面我们说刚才我们的课件里的例子呢
是有一个
我们有一个foo的函数
foo的函数的定义
以及我们可以看的到这个
这是一个列表
iterate函数它的执行结果我们可以看得到
那是这样
把这个列表通过
iterate把他输出
这个输出这个函数不掉
再看这个就是我们iterate
第一个参数list第二个参数就是foo是一个函数
这个函数作为我们的一个参数来进行
在函数里面作为参数进行调用
那么返回的结果也是一个函数啊
那这样的话
我们看这个调用已存储custon参数是list1和函数foo的时候
他的结果会是什么样子的
我们可以看的到这个函数的执行体其实是
我们通过foo函数就求平方
把iterate里面的元素求平方输出
我们可以看到他这个运行一下他的结果
没有运行前面的
我们需要把这个前面的都要运行一下
运行一下
我们用到的这个这个前面的函数运行啊
这次我们才可以看到
运行一下
那我们可以看到
这就是我们这个函数作为参数
在被另外一个函数调用的这样的一个过程
那么这个例子大家可以看的到我先定一个add加法
然后sub是减法
然后nult是一个乘法
我们又定义了个函数calculator 里面的输入一个参数
那么这个参数是1的时候呢
我就调用要返回谁啊
add函数
然后如果是2的时候返回sub这个函数
那么其他的呢就返回nult这个函数
那我们在这个里面可以把函数赋值给变量
并且可以带参数
然后这个变量可以在输入参数
相当于我们的给这个输入第一次把我们这个函数给了一个参数2
给我们这个calculator就相当于是我们用的是
他用的是减法
减法再把参数传进去
实参传进去以后他就做了一个减法
他的结果
我们可以看到输出他的结果
大家可以看一下啊
那么这个我们要加一条语句
让他输出一下
print一下他的调用结果
那么运行可以看得到
这就是他的1
那么后面这个的一样同理
那他是相乘
所以5乘4相乘是一个20这样的一个结果
那么这就是一个函数作为参数在另外一个函数里调用
那还有一些函数是可以做嵌套调用
像我们fib这个序列呢
我们fib序列是第三个等于第一个加第二个
第四个元素等于前面两个之和
所以我们可以对它进行是嵌套调用
也是可以得到结果的
好了
我们今天关于函数的介绍就到这个地方
-章测试
-章测试
-第一章:python简介
--章测试
-第二章:编码规范
--2.2常量和变量
--章测试
-第三章:数据类型
--章测试
-第四章:基本运算
--4.2比较运算符
--4.3逻辑运算符
--4.4位运算符
--章测试
-第五章:程序控制结构
--5.1顺序结构
--5.2条件结构
--5.3循环结构
--5.4跳转结构
--5.5异常处理
--章测试
-第六章:函数、模块与面向对象
--6.2面向对象
--6.4模块与包
--章测试
-第七章:文件操作
--7.2文件的写入
--章测试
-第八章:python生态库
--章测试
-第九章:TensorFlow基础
--章测试
-第十章:实例分析与实践
--章测试
-第十一章:人工智能在自然语言中的应用
--章测试