文件操作,函数中的参数
====文件操作补充====
- 不要对同一文件又读又写,如果想修改文件内容,需要把文件内容读取后修改,再把修改的内容和原文件中的其他原内容添加到新文件中
- 文件操作时,不写mode,则默认为只读模式
- 注意光标,光标在哪里,从光标开始读
- r+ 读写最常用
- read() 读取所有内容,生成一个字符串
- readline() 只读取一行内容,生成一个字符串
- readlines() 读取所有内容,生成一个列表
- write() 把需要写的字符串,写进文件
- writelines() 把一个列表写进文件
==================
初始函数
- 为何要使用函数:原代码冗余,可读性差
- 如何定义函数:def 函数名 (): 参数 函数体 返回值
- 返回值
- 有返回值 当函数运行到return时,函数运行结束,函数表达式返回一个返回值
- 无返回值 当函数内没有return时,函数表达式返回一个None
- 参数
=======参数=========
位置参数,默认参数,动态参数
- 位置参数 (站在函数调用的角度上)
- 按位置传参
- 按关键字传参
- 混合传参:必须先按位置传参,再按关键字传参
- 默认参数 设置参数默认值后,调用可以不传递该参数 (站在函数定义的角度上)
- 在函数定义时,默认参数要在位置参数的后面
- 当默认参数为不可变类型时,注:在定义函数前要把要表示出默认函数的参数值
b1=10 def func(a,b=b1): print(a,b) func(1) #输出 1 10
- 当默认参数为可变类型时,每次调用默认值时,都会在默认值中添加数据
def func(l = []): l.append(123) print(l) func() #[123] func([]) #[123] func() #[123,123]
- 动态参数 对于要传多个参数到函数中时,要需要用*arags 或 **kwargs
- 要传参数是按位置参数的,需要在定义函数中,用*arags聚合转成元祖 若要传进函数的参数形式是列表,元祖,字符,集合 需要在调用函数时用*打散
- 要传参数是按关键字参数的,需要在定义函数中,用**kwargs聚合转化成字典 若要传进函数的参数形式是字典 需要在调用函数时用**打散
函数的嵌套:在定义函数中,内部又定义了一个函数,即函数1中又定义了一个函数2,当调用函数1时,才能运行内部的函数2,不能在函数外使用函数2
- 调用内部函数,往内部函数中传参方法
def func1(*args,**kwargs): def func2(*a,**e): print(a,e) 输出 (1, 2, 3, 4) {'e': 3} func2(*args,**kwargs) func1(1,2,3,4,e=3)