上节回顾
文件常用操作
f.flush立即刷入硬盘
closed 是否关闭
encoding 获取编码
name 文件路径
模式
文本模式t 是默认的只能处理文本文件,会自动处理编码和解码
字节模式b 适用于任何文件类型,读取的都是二进制
函数基础
01函数概念
为什么用函数:
面条版的程序存在问题:
1.代码结构不清晰,可读性差
2.有很多冗余(多余的重复的)代码
3.后期的维护性极差,扩展性
基于上述问题,程序中必须有对应的解决方案就是函数
什么是函数:
函数是实现某一功能的代码的集合体
相当于生活中的具备某个功能的工具
要使用工具 必须要先制造工具才可以使用
同理,在程序中想要使用函数,则必须先定义函数(创建函数)
02定义函数
定义函数的语法:
def 函数的名字(参数1,...参数n):
'''
文档注释
'''
代码1
代码2
代码n
return 值
return 参数 注释 都是可选项
def:定义的关键字
函数的名字:用来查找函数和执行函数,命名与变量的命名规范一样
文档注释:注释是给程序员看的备注信息,文档注释用户描述函数的具体细节
代码块:具体实现功能的代码,也称之为函数体
return:用于返回值给使用者
空函数:
如果不包含任何函数体就称之为空函数,调用空函数是没有任何意义的
def func():
pass #略过函数体
在程序开发初期有用,可以用于定义出程序的结构
什么样的代码应该定义成函数:
这段代码会多次被执行
这段代码是一个完整的独立的功能
参数是什么:
参与运算的数据
有参函数:当你的函数体执行需要依赖外界的数据才能完成功能,那就应该是有参函数
无参函数:当你的函数执行不需要依赖外界的数据就能完成功能,那就是无参函数
03调用函数
函数的定义调用:
定义阶段
1.申请内存空间,将函数的代码存储到内存中
2.把内存地址和函数名建立绑定关系
需要强调的是:函数在定义阶段是不会执行函数体代码,但是会检测语法
返回值详解
调用阶段
1.通过函数名找到函数的内存地址
2.加括号触发函数体的执行
直接调用
def func()
print('hello')
func()
在表达式中调用
def max(s,b):
if a>b:
return a
else:
return b
print(max(10,20)*100)
将函数的返回值作为参数
10,20,30
print(max(max(10,20),30))
04返回值
return 关键字 用来返回一个值
在函数定义中是可选的
什么时候该有返回值:
函数是工具,是帮你完成某个功能的,一些功能在完成后必须要产生一些结果给调用者
什么时候不需要返回值:
在调用这个函数时,不需要返回任何结果给调用者,那就不需要返回值
return的特殊用法
1.一次性返回多个值
def func()
return 1,2,3,4,'abc',1.1
给的是元祖
2.返回空值
不写任何的retnu 默认返还None, return后不返回任何值
return None
3.一个函数中有多个ruturn关键字
函数执行过程中只要遇到了return 后续代码都不执行 函数立马返回
我们可以利用这个特点 来结束函数的执行
05常见错误演示
函数必须遵循先定义后调用
1.错的
func1()
def func1():
print('func1 run')
2错的(先定义 后调用)
def func2():
print('func2 run')
func3
func2()
def func3():
print('func3 run')
3对的
def func2():
print('func2 run')
func3
def func3():
print('func3 run')
func2()