学习目标:
python函数和文件操作学习内容:
1、[函数] 2、[强化练习] 3、[文件操作、综合引用]学习时间:
2小时学习产出:
1、[函数] 1、什么是函数
(不多说)
2、定义函数
*格式:
def 函数名():
代码
3、调用函数
*通过函数名()调用
4、注意:
*每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了
*当然了如果函数中执行到了return也会结束函数
5、函数的文档说明
*使用help(函数名)可以查看函数的相关说明
6、函数参数
类似C语言的函数参数
*定义时小括号中的参数,用来接收参数用的,称为 “形参”
*调用时小括号中的参数,用来传递给函数用的,称为 “实参”
7、函数的返回值
*使用return返回函数的返回值
*使用变量接受函数的返回值
8、四种函数类型
无参数,无返回值
无参数,有返回值
有参数,无返回值
有参数,有返回值
9、函数的嵌套调用
*一个函数里面又调用了另外一个函数,这就是所谓的函数嵌套调用
10、局部变量
*局部变量,就是在函数内部定义的变量
*其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
*因为其作用范围只是在自己的函数内部,所以不同的函数可以定义相同名字的局部变量(打个比方,把你、我是当做成函数,把局部变量理解为每个人手里的手机,你可有个iPhone8,我当然也可以有个iPhone8了, 互不相关)
*局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储
*当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了
11、全局变量
*如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量
*当函数内出现局部变量和全局变量相同名字时,函数内部中的 变量名 = 数据 此时理解为定义了一个局部变量,而不是修改全局变量的值
*如果在一个函数中需要对多个全局变量进行修改,那么可以使用global定义
12、多函数程序大的基本使用流程
*多个函数中共享数据方法:
*使用全局变量
*使用函数的返回值、参数
*函数嵌套调用
13、函数返回值2:
*如何返回多个值:
*一个函数中可以有多个return语句,但是只要有一个return语句被执行到,那么这个函数就会结束了,因此后面的return没有什么用处
*return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返回多个数据
*如果return后面有多个数据,那么默认是元组
14、函数参数2:
*缺省参数
*在形参中默认有值的参数,称之为缺省参数
例如: def printinfo(name, age=35, sex):
*调用函数时,缺省参数的值如果没有传入,则取默认值
*注意:带有默认值的参数一定要位于参数列表的最后面
*不定长参数:
*有时可能需要一个函数能处理比当初声明时更多的参数, 这些参数叫做不定长参数,声明时不会命名。
def functionname([formal_args,] *args, **kwargs):
"""函数_文档字符串"""
function_suite
return [expression]
*加了星号(*)的变量args会存放所有未命名的变量参数,args为元组
*而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典
*如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面, 但如果有**kwargs的话,**kwargs必须是最后的
15、拆包、交换两个变量的值
*拆包:
*对返回的数据直接拆包
*拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常
*除了对元组拆包之外,还可以对列表、字典等拆包
*交换2个变量的值
第1种方式
# a = 4
# b = 5
# c = 0
#
# c = a
# a = b
# b = c
#
# print(a)
# print(b)
第2种方式
# a = 4
# b = 5
# a = a+b # a=9, b=5
# b = a-b # a=9, b=4
# a = a-b # a=5, b=4
# print(a)
# print(b)
第3种方式
a, b = 4, 5
a, b = b, a
16、引用
*在python中,值是靠引用来传递来的
我们可以用id()来判断两个变量是否为同一个值的引用;
*引用当做实参
*Python中函数参数是引用传递(注意不是值传递)
*对于不可变类型,因变量不能修改,所以运算不会影响到变量自身
*而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量
17、可变不可变类型
*所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变
*可变类型有: 列表、字典、集合
*不可变类型有: 数字、字符串、元组
18、函数使用的注意事项
*函数名不能重复
*调用时有形参的需要传递形参,注意函数返回值的接收;
*注意变量的作用域
2、[强化练习]
1、项目练习:
学生管理系统
2、递归函数
(有C语言基础不难理解递归函数)
3、匿名函数
*什么是匿名函数
用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
*格式:
lambda [arg1 [,arg2,.....argn]]:expression
例如:
sum = lambda arg1, arg2: arg1 + arg2
*使用:
sum(arg1,arg2)
*注意:
Lambda函数能接收任何数量的参数但只能返回一个表达式的值
匿名函数不能直接调用print,因为lambda需要一个表达式
4、列表推导式
*所谓的列表推导式,就是指的轻量级循环创建列表
*例如:
a=[x for x in range(4)]
5、set、list、tuple
*set、list、tuple之间可以相互转换
*set()
*list()
*tuple()
*使用set,可以快速的完成对list中的元素去重复的功能
3、[文件操作、综合引用]
1、文件操作介绍
*什么是文件
文件是以某种格式保存数据的集合;
*文件的作用:
就是把一些存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力
2、文件的打开和关闭
/*打开文件
open(文件名,访问模式)
例如: f = open('test.txt', 'w')
*访问模式
r :只读打开文件,文件指针至于开头
w :打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
a :打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb :以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb :以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
ab :以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ :打开一个文件用于读写。文件指针将会放在文件的开头
w+ :打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ :打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ :以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ :以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ : 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写
/*关闭文件
close()
例如:f.close()
3、文件的读写
1、写数据(write)
例如:f.write('hello world, i am here!')
*如果文件不存在那么创建,如果存在那么就先清空,然后写入数据
2、读数据(read)
例如:content = f.read(5) # 最多读取5个数据
*使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
3、读数据(readlines)
例如:content = f.readlines()
*就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
4、读数据(readline)
例如:content = f.readline()
*一行行的读入数据
5、应用1:
制作文件的备份:
输入文件的名字,然后程序自动完成对文件进行备份
4、文件的相关操作
*使用os模块
1、文件的重命名
例如:
import os
os.rename("需要修改的路径及文件名", "新的路径及文件名")
2、删除文件
例如:
import os
os.remove("待删除的路径及文件名")
3、创建文件夹
例如:
import os
os.mkdir("目录名")
4、获取当前目录
例如:
import os
os.getcwd()
5、改变默认目录
例如:
import os
os.chdir("../")
6、获取目录列表
例如:
import os
os.listdir("./")
7、删除文件
例如:
import os
os.rmdir("文件名")
5、综合运用
项目:学生管理系统(文件版)