**
一、函数加强
1.打包
定义函数时,有不定长参数时需要打包
2.打包类型
a.按位置参数打包:
使用 *args 打包所有的位置参数为一个元组
def 函数名字(*args ):
"函数_文档字符串"
功能代码
return [返回值]
函数名字(值1,值2,…)
b.按关键字参数打包:
使用 **kwargs 打包所有的关键字参数为一个字典
def 函数名字(**kwargs ):
"函数_文档字符串"
功能代码
return [返回值]
函数名字(关键字参数1=值1,关键字参数2=值2…)
3.拆包
调用函数时需要拆包
4.拆包类型
a.按位置参数进行拆包:
元组/列表/字典.values() 中数据的顺序和实际参数的顺序是一致的时候, 使用 *元组/列表/字典.values() 进行拆包传递给函数作为实际参数, 不用依次从容器中取
def 函数名字(形式参数1,形式参数2,形式参数3):
"函数_文档字符串"
功能代码
return [返回值]
列表 =[元素1,元素2,元素3]
函数名字(*列表)
元组 = (元素1,元素2,元素3)
函数名字(*元组)
b.按关键字参数进行拆包:
如果字典中的键就是关键参数的名字, 使用 **字典 对字典进行拆包传递给函数作为实际参数
**
二、返回值加强
1.return作用
a. 返回数据到函数的调用位置
b. 终止函数执行(退出函数)
2.无返回值(返回None)的几种原因
a. 没有return
b. return 后面无内容
c. return 后面接 None
3.函数返回多个值
函数可以一次性返回多个值,同时也需要多个变量保存这些返回值
return 值1,值2...
4.函数返回多种值
函数可以根据不同的情况返回不同的值(可以有多个return语句,但是只能够执行一个)
**
三、变量作用域
1.变量的作用域
指变量定义的上下文(即变量的有效范围),函数将变量分割成立函数内变量和函数外变量
2.两种变量作用域
a.全局变量:
范围为任意位置
注意:
全局变量访问是任意位置;
全局变量修改时, 函数外可以修改, 函数内可以间接修改(通过 global 全局变量名 引入全局变量, 再修改)
b.局部变量:
只能在函数内部使用
**
四、Python中的文件操作
1.为什么进行文件操作
需要永久存储的数据,可保存在文件中(硬盘中:可掉电式设备)
2.文件两类
a.文本类型(文字):
文字(看得懂的)----二进制(01010101)----计算机识别----打开文件---- 应用程序----识别
编码:
utf-8(全球文字支持)(长度动态,节约空间)
gbk(中文简体)
big5(繁体)
latin1(英文)
b.二进制类型:
可直接执行的文件(exe,msi,png,jpg等)
3.文件操作的步骤:
a.打开文件:
fp = open(文件路径,打开方式,encoding="编码方式")
打开方式:
r(读) w(覆盖写, 自动创建) a(追加, 自动创建)
二进制操作: rb wb ab (读写追加二进制文件)
b.读写文件:
读:
fp.read() : 读完
fp.read(number): 读取指定个数字符
fp.readline(): 一次读一行
fp.readlines(): 按行读取所有
写:
fp.write(数据)
fp.writelines([列表]): 写入多条数据(不换行)
c.关闭文件:
fp.close()
4.循环读取文件内容 (解决大文件读取问题)
data = fp.read(文件)
while data: # 其他类型的数据也可以当作布尔值
操作data
data = fp.read(文件) # 一次比对不成功,继续读取下次进行比对
fp.close() # 关闭文件