函数初阶与文件数据格式化
函数:
即组织好的,可重复使用的,用于实现单一,或相关联功能的代码段
函数的定义:
正确的定义一个自己想要的功能函数,是需要满足一些限定的规则
1、函数代码块以def关键字开头,后接函数标识符名称和小括号“()”
2、任何传入的参数和自变量必须放在小括号内(括号内可定义参数)
3、函数第一行语句可选择性使用文档字符串(用于存放函数说明)
4、函数内容以冒号’:’起始;并缩进
5、Return[表达式]结束函数,选择性返回一个值给调用方,不带的话返回值为None
函数的参数:
1、必选参数、默认参数、可变参数、关键字参数、命名关键字参数、各参数之间的组合
2、必选参数:也称位置参数,必须以正确顺序传入函数,同时调用函数时参数的数量必须与声明时一样
3、默认参数:调用函数时,若无传递参数,则使用默认参数
4、可变参数:即在定义的函数中传入的参数个数时可变,运用可变参数可方便地进行参数个数位置时的函数调用,可变参数以list或tuple形式传递
5、关键字参数:函数调用使用关键字参数来确定传入的参数值
6、命名关键字参数:使用关键字参数,函数调用者可传入任意不受限制的关键字参数,Python中的命名关键字参数对传入的关键字参数做进一步限制
格式:在关键字参数前增加一个”*”
一次函数调用可传递以上所述任何一种或多种参数的组合
例:
# 数组的最大值,最小值的分别排列至首、末位
def num_cvs(nums):
num_list=[]
for i in nums:
if i == " ": # 设置跳出的条件
break
else:
num_list.append(i)
max_num = max(num_list) # 利用max、min方法找最大、最小值
min_num = min(num_list)
num_list[num_list.index(max_num)] = num_list[0] # index方法进行索引换位赋值
num_list[num_list.index(min_num)] = num_list[-1]
num_list[0] = max_num
num_list[-1] = min_num
return num_list
nums=list(map(str,input("任意输入多个数(空格分割):").split(" "))) # 接受多个元素
print("原数组",nums)
late_num=list(num_cvs(nums)) # 调用函数
print('换位后数组:',late_num)
递归函数
即在函数的定义中使用函数自身的方法,在函数内部,可调用其他函数(如果一个函数在内部调用自身,则为递归函数)
特性:
(1).必须有一个明确的结束条件
(2).每次进入更深一层递归时,问题规模相比上次递归都应有所减少
(3).相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)
匿名函数
在python中使用lambda来创建匿名函数;匿名的意思即不在使用def语句标志形式定义函数
1、lambda只是一个表达式,函数体比def简单
2、lambda主体是一个表达式,而非代码块
3、lambda函数拥有自己的命名空间,且不能访问自己参数列表外或全局命名空间的参数
4、基本语法:Lambda[arg1[,arg2,……argN]]:expression
文件数据格式化
1.文件概述
意义:找到计算机中唯一确定的文件
组成:文件路径、文件名主干、文件扩展名
2.文件类型
计算机中文件可分:
文本文件、二进制文件
(1).文本文件:专用于存储文本字符数据
(2).二进制文件:不能直接阅读,需解析,才能阅读
3.标准文件
Python的sys模块中定义了3个标准文件:
Stdin(标准输入文件);stdout(标准输出文件);stderr(标准错误文件)
4.文件的打开与关闭
(1).打开文件
内置函数open()用于打开文件;该方法的声明如下:
with语句也可打开文件,不同的是with语句打开的文件在事后会自动关闭
参数:
File,文件的路径;mode,设置文件的打开模式;buffering,设置访问文件的缓冲方式,取值为0或1
文件打开的模式有:r/rb,只读模式;w/wb,只写模式;a/ab,追加模式;r+/rb+;读取(更新)模式;w+/wb+,写入(更新)模式;a+/ab+,追加(更新)模式
(2).关闭文件
Python中可通过cloae()方法关闭文件,还可使用with语句实现文件的自动关闭
(3).及时关闭文件的好处
减少占用系统的资源;防止在程序因异常关闭时的数据丢失
5.读取文件
(1).read()方法:可从指定文件中读取指定字节的数据,语法格式:
read(n=-1)
(2).readline()方法:可从指定文件中读取一行数据,语法格式:
Readline()
(3).readlines()方法:可一次读取文件中的所有数据,若读取成功,则返回一个列表,文件中的每一行对应列表中的一个元素,语法格式:
Readlines(hint=-1)[参数hint的单位为字节,用于控制要读取的行数]
6.写入文件内容
(1).write()方法:可将指定字符串写入文件,语法格式:
Write(data);若数据写入成功,会返回本次写入文件数据的字节数
(2).writelines()方法:可将行列表写入文件,语法格式:
writelines(lines)
注:文本文件支持多种编码方式,不同编码方式下字符与字节的对应关系不同
例:
# 生成100个mac地址并写入文件;MAC地址前6位(16进制)位:01-AF-3B
import random
import string
def creat_mac():
# 第一个MAC地址
mac = '01-AF-3B'
h_num = string.hexdigits # 生成16进制数
for i in range(2):
n = random.sample(h_num, 2)
nn = '-' + ''.join(n).upper() + '-' + ''.join(n).upper() # 全大写
mac += nn
return mac
def main():
# 只写模式打开
with open('./MAC.txt','w') as f:
for i in range(100):
macs = creat_mac() # 调用creat_mac()函数
print(macs)
f.write(macs+'\n')
main()
使用os模块管理文件与目录
删除文件:os.remove(filename)
文件重命名:os.rename(raw filename,new filename)]
创建/删除目录:os.mkdir(dnmae)/os.rmdir(dname)
获取当前目录:os.getcwd()
更改默认目录:os.chdir(路径名)
获取目录列表:os.listdir(dname/path)