函数基础
1.控制文件内的指针移动
f.seek(以字节为单位)
0 参照文件开头,可以在T模式和B模式下用
1 参照当前文件所在位置,
2 参照文件末尾 只能在b模式下用
with open('',mode='rb') as f:
f.seek(0,2)
print(f.tell())
print(f.read().decode('utf-8'))
f.tell查找文件当前位置 参照文件开头
f.truncate
#只有T模式下的read n ,n代表字符个数,除此以外都是以字节为单位
函数:
什么是函数:
在程序中具备某一功能的工具=》函数
实现准备好工具=》函数的定义
遇到应用场景,哪来就用=》函数的调用
为什么要用函数:
1.代码冗余
2.程序的组织结构不清晰,可读性差
3.扩展性差
如何用函数:
函数的使用必须遵循一个原则:
1.先定义
定义语法:只检测语法,不执行代码
def 函数名(参1,参2,参3)
'''
文档注释
'''
代码块
return 值(返回值)
2.后调用:执行函数体代码
函数名()
定义函数的三种形式
1.无参函数
2.有参函数
3.空函数
调用函数的三种形式
1.语句形式:函数名+() 单纯执行某些功能
2.表达式形式: 只针对有返回值
3.函数的调用可以作为另外一个函数的参数传入(将函数的返回值做为参数传入另外一个函数 )
函数分为两大类:
内置函数
自定义函数
函数的返回值
函数体代码的运行成果
为什么要有返回值?
执行一段功能需要到函数的处理结果做进一步的处理,则函数必须要有返回值
如何用:
return 返回值的特点:
1.返回的值没有类型限制,也没有个数限制
1.return 或者没有return:返回值为None
2.return 只有一个值:返回的就是该值本身
3.return (值1,值2,值3):返回元组
2.return 是函数结束运行的标志,函数内可以有多个return,但只要执行一次函数就立即接护送,并且将resturn后的值当做本次调用的结果返回
函数的参数:
1.形参:在定义函数时,括号内指定的参数(变量名),称之为形参
2.实参:在调用函数时,括号内传入的参数(变量值),称之为实参
二者关系:在调用时,实参值(变量值)会传给形参(变量名),该种关系在调用函数时生效,调用结束取消绑定
函数参数的详解
1.形参:
1.1位置形参:在定义阶段,按照从左到右的顺序依次定义的形参
特点:必须被传值,不能多也不能少
每次传值都需要传入
1.2 默认参数:在定义阶段,已经为某个形参赋值,改形参就称之为默认形参
注意:位置形参必须要跟在默认形参前面
特点:在定义阶段已经有值,调用阶段可以不用为其传值
每次可传值也可以不传值
1.3形参中*与**的用法
*args
1.形参中的*功能是:会将溢出的位置实参存成元祖形式然后赋值紧跟其后变量名
**kwargs
2.形参中的**功能是:会将溢出的关键字实参存成字典形式然后赋值紧跟其后变量名
2.实参:
可以混用关键字实参和位置实参,但是同一个形参只能被赋值一次,
位置实参必须跟在关键字实参的前面
2.1位置实参:在调用阶段,按照从左到右的顺序依次传入的值
特点:这种传值方式会与形参一一对应
2.2 关键字实参:在调用阶段,使用key:value的格式传值
特点:可以完全打乱位置,单仍然可以为指定形参传值
2.3实参中*与**的用法
1.实参中的*功能是:先将实参打散成位置实参,然后与形参做对应
2.实参中的**功能是:先将实参打散成关键字实参,然后与形参做对应
只能跟字典
为一个函数传参,内部函数想要跟传参函数一致,则需要形参设置为*args **kwargs,内部函数也要设置同样的格式
def index(x,y,z)
print(x,y,z)
def wrapper(*args,*kwargs):
index(*args,,**kwargs)