python函数
函数类似于工具,提前定义好了可以反复使用
![image]()
函数语法结构
1.def
定义函数关键字(必须)
2.函数名
函数的名字,相当于变量名,函数名的命名风格与规范遵循变量名的(必须)
3.参数1,参数2
参数可以没有也可以有多个,表示使用函数前需要一些条件(不必须)
4.函数注释
类似于产品说明书,主要用于介绍函数功能,参数使用及其他情况(不必须)
5.函数体代码(重要)
函数的核心的代码逻辑(必须)
6.return返回值
使用函数后返回给使用者的结果(不必须)
![image]()
函数的定义与调用
1.函数必须先定义在调用(顺序不能乱)
2.函数在定义阶段只会检查语法不执行代码
3.函数在调用阶段才会执行函数体代码
ps:调用函数需函数名加括号,如果函数在定义阶段有参数则在调用阶段也需要给参数
![image]()
函数的分类
1.内置函数
python解释器自带的函数(提前定义好了,直接使用即可)
2.自定义函数
2.1有参函数
在函数定义阶段括号内没有写参数(变量名)
2.2无参函数
在函数定义阶段括号内写了参数(变量名)
2.3空函数
函数体代码为空,空函数本身没有意义,但是可以提前规定编写代码的思路
![image]()
函数参数的两大分类
形式参数
在函数定义阶段括号内写的参数,简称"形参"
实际参数
在函数调用阶段括号内所写的参数,简称"实参"
ps:我们可以将形参看成变量名,实参看成变量值,两者在函数调用时临时绑定,运行结束后断开
形参的表现方式只有一种就是变量名,实参的表现方式有很多种(但是把握核心,就是数据值)
![image]()
位置参数
按照从左到右的顺序依次填入的参数
位置形参
在函数定义阶段按照从左到右的顺序依次填入的变量名
位置实参
在函数调用阶段按照从左到右的顺序依次填入的数据值
ps:位置形参与位置实参在函数调用阶段,按照位子一一绑定,位置参数在绑定时多一个不行,少一个也不行
![image]()
关键字实参(可以打破位置顺序)
在函数调用阶段通过形参名=数据值的形式指名道姓的传值
![image]()
ps:格式越简单越靠前,格式越复杂越靠后
![image]()
默认参数
默认形参
函数在定义阶段就可以给形参赋值了
该形参在调用阶段不给值则使用默认的
该形参在调用阶段如果给值,则使用给的值
![image]()
ps:位置形参与默认值形参在定义的时候,位置形参必须在默认值前面,越简单越靠前,越复杂越靠后
可变长参数
可变长形参
函数无论传入多少位置参数都可以正常运行
一个星号用于接收多余的位置参数(*号后面建议跟args)
![image]()
两个星号用于接收多余的关键字参数(**号建议跟kwargs)
![image]()
两者联用
![image]()
*会在实参中会将列表,元组的元素打散成位置参数一一传值
![image]()
**号会在实参中将字典内键值对打散成关键字元素参数传入
![image]()
函数参数补充
命名关键字参数
![image]()
名称空间
名称空间就是存放变量名与变量值绑定关系的地方(类似民政局)
名称空间分类
内置名称空间(python解释器启动与关闭而创建和销毁)
![image]()
python解释器提前给定义好的
全局名称空间(随着py文件的创建与结束而创建和销毁)
![image]()
在python顶格编写的代码运行后会存入全局名称空间
局部名称空间
![image]()
函数体代码运行后产生的都是局部名称空间
名字查找顺序
如果在局部
局部>>>全局>>>内置
如果在全局
全局>>>内置
局部空间的嵌套
![image]()
特例
![image]()
名称空间的作用域
作用域
名称空间所能够作用的范围
内置名称空间
程序任何阶段任何位置均可使用(全局有效)
全局名称空间
程序任何阶段任何位置均可使用(全局有效)
局部名称空间
一般情况下只在各自的局部名称空间中有效
![image]()
global与nonlocal关键字使用
关键字global
![image]()
关键字nonlocal
![image]()
函数对象(函数名)
函数名遇到括号就会调用!!!
1.函数名可以当做变量名赋值
![image]()
2.函数名还可以当做函数的实参
![image]()
3.函数名可以当做函数的返回值
![image]()
4.函数名可以当做容器类型(内部可以存放多个数据)的元素
![image]()
函数的嵌套调用
嵌套调用就是函数内部调用其他函数
![image]()
函数的嵌套定义
函数体内部定义其他函数
将复杂的功能全部隐藏起来,暴露一个简单的接口
![image]()
闭包函数
闭:定义在函数内部的函数
包:内部函数使用了外部函数名称空间中的名字
只有符合上述两个特征的函数才可以称之为"闭包函数"
![image]()
闭包函数其实是给函数传参的第二种方式
![image]()
装饰器
器:指的是工具
装饰:给被装饰对象添加额外的功能
装饰器原则
开放封闭原则
开发:对扩展开放
封闭:对修改封闭
装饰器核心思想
在不改变被"装饰对象内部代码"和"原有调用方式"的基础之上添加额外功能
统计index函数的执行时间
![image]()
未完待续...![image]()
posted @
2021-11-12 17:15
Zzy的Bk
阅读(
107)
评论()
收藏
举报