基本概念
1.形参与实参
>形参(定义函数时的为形参)
>实参(调用时传递的是实参)
2.高阶函数
>把函数对象作为参数的函数称为高阶函数
3.局部函数
>python支持在函数内定义函数,即局部函数
4.函数执行机理
>函数的执行按栈数据结构完成,每调用一次函数就产生一个栈,函数只能
使用栈内的数据(即该函数的局部变量)。
5.调用函数
>函数对象(参数列表)
6.注意
>函数名即函数对象
>函数名命名同变量,若两个字母则第二个首字母大写
>函数在定义时才会执行
>函数的参数可以为任何类型,只要在函数内对该参数的操作符合用法即可
定义
1.关键字def定义
def 函数名 (参数列表逗号隔开):
(缩进)函数的文档说明(字符串),可通过函数对象的__doc__属性访问
(缩进)代码
(缩进)代码
……
2.lambda匿名函数定义
>语法:lambda 参数1,参数2……(可省) :语句(返回值)(不用return)
>返回函数对象,需一个变量(g)接收此对象,调用时为g(参数列表)即可
>当语句为条件时,满足条件返回True,不满足返回False
参数传递
1.参数传递方式
>位置传参
使用位置传递参数,从左到右一一对应,适用任何情况
>关键字传参
使用形参=xx传递指定参数,只能在传参列表最后面使用,传参列表的前
半部分参数仍使用位置传参的方式传递参数
>*可以作为形参表的内容,表示*后的下一个参数必须使用关键字传值
2.参数传递的缺参和多参处理
>缺参处理(设置缺省值)
在形参列表中直接给某个参数赋值即可设置缺省值,且有缺省值的形参
必须放在形参列表的最右边,调用函数时此参数可以不给值
>多参处理(设置冗余接收器)
·冗余接收元组
无映射实参在形参列表中最后加一项*变量名以元组形式
接收后面的冗余实参(只能写在后面且在冗余接收字典前)
·冗余接收字典
映射类型实参(如关键字传值的实参)在形参列表中多加一项**变量名
以字典来接收后面的冗余实参(只能写在后面且在冗余接收元组后)
3.参数传递实例
>将序列作为参数传递
·可直接传序列
·可用*将序列中的值一一取出来传给函数(即是把序列拆分为单元素在
分别传给函数)
·也可用序列索引传值
>字典作为参数传递
·可直接传字典
·可用**将字典中的键值对一一取出来传给函数(键值必须和此函数的形
参相同,在字典里的参数可无序,参数一般是字符串,键必须是字符串).
·也可用字典索引传值。
>集合作为参数传入
·可直接传入集合
·可用*将集合中的值一一取出来传给函数(即是把集合拆分为单元素在
分别传给函数)
>其它对象作为参数传入
·直接传入对象名即可
返回值
1.语法 return 返回值
>函数默认返回None,且return执行后函数调用会立即结束
>可以返回多个对象,使用逗号隔开即可
* 实际上python会将多个对象打包为元组在返回,也可自行打包返回,
接收返回值时使用序列解包即可