Python -- 3语法基础(三)
目录
一、函数
1、函数的作用
函数就是一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求。函数在开发过程中,可以更高效的实现代码重用。
2、函数的使用步骤
- 定义函数
def 函数名(参数):
代码...
- 调用函数
函数名(函数)
注:在不同需求中,参数可有可无;在Python中,函数必须先定义后使用。
3、函数参数的作用
4、函数的返回值作用
5、应用:计算任意两数字之和,并保存结果
6、函数的说明文档
- 定义函数说明文档
def 函数名(参数):
""" 说明文档的位置 """
代码...
- 查看函数说明文档
help(函数名)
7、函数的嵌套调用
函数嵌套调用是指一个函数里面又调用了另一个函数。
8、变量作用域
变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量。
- 局部变量:只在函数体内部生效
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成,则销毁局部变量。
- 全局变量:在函数体内、外都能生效的变量
在函数体内部修改全局变量:使用global关键字声明。
9、函数的参数
- 位置参数:调用函数时根据函数定义的参数位置来传递参数。
注:传递和定义参数的顺序及个数必须一致。
- 关键字参数
写法:key = value
注:函数调用时,如果又位置参数时,位置参数必须子啊关键字参数的前面,但关键字参数之间不存在先后顺序。
- 缺省函数:也叫默认参数,用于定义参数,为参数提供默认值,调用函数时可不传该默认参数的值。
注:函数调用时,如果为缺省参数传值则修改默认参数值;否则使用这个默认值
- 不定长函数:可变参数,用于不确定调用时会传递多少个参数(不传参也可以)的场景。此时,可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。
- 包裹位置传递:收集所有位置参数,返回一个元组
- 包裹关键字传递:收集所有关键字参数,返回一个字典
10、拆包
11、引用
在python中,值是靠引用传递来的。
我们可以用id()来判断两个变量是否为同一个值得引用。可以将id得值理解为内存地址得标识。
二、应用:学院管理系统
1、系统简介:需求,键入系统显示系统功能界面,功能如下:
- 添加学员
- 删除学员
- 修改学员信息
- 查询学员信息
- 显示所有学员信息
- 退出系统
三、递归
1、递归的特点
- 函数内部自己调用自己
- 必须有出口
四、lambda表达式
语法: lambda 参数列表 : 表达式
注:
- lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
- lambda函数能接受任何数量的参数但只能返回一个表达式的值。
应用:计算 a+b
2、lambda的参数形式
- 无参数
- 一个参数
- 默认参数
- 可变参数:**args
这里的可变参数传入到 lambda 之后,返回值为元组
- 可变参数:**kwargs
3、lambda的应用
- 带判断的 lambda
- 列表数据按字典key值排序
五、高阶函数
把函数作为参数传入
1、内置高阶函数
- map()
- reduce()
- filter()
六、闭包
python函数是支持嵌套的。如果在一个内部函数中对外部函数作用域(非全局作用域)的变量进行引用,那么内部函数就会被成为闭包。
闭包需要满足如下三个条件。
- 存在于两个嵌套关系的函数中,并且闭包是内部函数。
- 内部函数引用了外部函数的变量(自由变量)。
- 外部函数会把内部函数的函数名称返回。
七、装饰器
假设我们已经开发了一个本有的函数,后续可能会增加临时需求,例如插入日志,我们可以增加一个包裹函数,由它来负责这些额外需求,这个包裹函数就是装饰器。
装饰器主要应用场景:
- 引入日志
- 执行函数后的清理功能
- 函数执行时间统计
- 权限校验
- 执行函数前预备处理
- 缓存
装饰器是一个函数,他需要接受一个参数,该参数表示被修饰的函数。
通过在函数定义前面添加@符合,和装饰器名,实现装饰器对函数的包装。
def wrap(func): print("正在装饰") def inner(): print("正在验证权限") func() return inner @wrap def f1(): print("f1") f1()
多个装饰器应用在一个函数上,调用顺序是从下至上。
八、文件
文件操作的作用:把一些内容存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。
1、打开
打开文件的方式:
- r:已读方式打开文件。
- w:打开一个文件只用于写入。
- a:打开一个文件用于追加。
2、写入
对象对象.write( ' 内容 ' )
注意:w和a模式:如果文件不存在则创建文件;如果文件存在,w模式先清空再写入,a模式直接在末尾追加。
r模式:如果文件不存在则报错。
3.读
- read()
文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中的所有的数据。
- readlines()
文件对象.readlines()
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
- readline()
readline()一次读取一行内容。
4、移动文件指针
seek()
文件对象.seek(偏移量,起始位置)
起始位置:0,文件开头;1,当前位置;2,文件结尾
5、关闭
文件对象.close()
6、文件和文件夹的操作
在python中文件和文件夹的操作要借助os模块里面的相关功能。