文件的‘改‘
with open(‘1234567‘,‘r‘,encoding=‘utf-8‘) as f1,open(‘1234567.bak‘,‘w‘,encoding=‘utf-8‘) as f2: for line in f1: if ‘未知‘ in line: line = line.replace(‘未知‘,‘男‘) f2.write(line) import os os.remove(‘1234567‘) os.rename(‘1234567.bak‘,‘1234567‘)
python中文件并没有意义上的改,这段代码的本质是读取文件到pycharm中,更改内容并添加到一个新建的文件中,然后删除原文件
再将新建的文件命名成原文件
初始函数
定义函数 函数的调用
s = ‘陈帅是陈明的哥‘ def my_len(): i = 0 for a in s: i += 1 print(i) f = my_len() print(f)
7
None
函数定义了之后可以在任何需要它的地方调用
但是不能改变,只能做到函数内代码的作用
没有返回值,只是单纯的打印
返回值
return xxx 求返回值,后面加上要求返回值的变量的变量名
s = ‘陈帅是陈明的哥‘ def my_len(): i = 0 for a in s: i += 1 print(i) return i f = my_len() print(f)
7
7
返回值的三种情况
没有返回值的,默认返回None
没有返回值
不写return 没有要求返回值
s = ‘陈帅是陈明的哥‘ def my_len(): i = 0 for a in s: i += 1 print(i) f = my_len() print(f)
7
None
只写return 没有要求返回什么的返回值
s = ‘陈帅是陈明的哥‘ def my_len(): i = 0 for a in s: i += 1 print(i) return f = my_len() print(f)
7
None
return None 返回值空
s = ‘陈帅是陈明的哥‘ def my_len(): i = 0 for a in s: i += 1 print(i) return None f = my_len() print(f)
7
None
return是结束一个函数,执行到return后面的代码便不执行了,跳出该函数
返回一个值
可以返回任何的数据类型
只要返回,就可以接受到
如果在一个程序中有多个return,只执行第一个
def my_len(): return 1 return 2 f = my_len() print(f)
1
返回多个值
多个返回值用多个变量接收,有多少返回值就要有多少变量
用一个变量接收多个返回值,得到的是一个元组
def my_len(): return 1,2,[1,2,3,],(‘k‘,‘v‘) return 1,2,3,4 f = my_len() print(f)
(1, 2, [1, 2, 3], (‘k‘, ‘v‘))
参数
没有参数
定义函数和调用函数时括号里都不写内容
有一个参数
传什么就是什么
有多个参数
位置参数
站在实参的角度上:
按照位置传参
按照关键字传参
可以混用:但必须先按照位置传参,再按照关键字传参,不能给同一个变量传多个值
站在形参的角度上:
位置参数:必须传,且有几个参数传几个值
默认参数:可以不传,如果不传就是用默认参数,传了参数就用传来的参数
只有调用函数的时候
按照位置传:直接写参数的值
按照关键字:关键字=值
定义函数的时候
位置参数:直接定义参数
默认参数:关键字参数:参数名=‘默认的值‘
动态参数:可以接受任意多个参数
*args :可以传任意参数,参数名前面加*,args是个约定俗成的参数名
接收的是按照位置传参的值,组成一个元组
**kwargs:用来接受不知道多少个关键字参数(其它大约同上)
接收的是按照关键字传参的值,组织成一个字典
顺序:位置参数,*args,默认参数,**kwargs
动态参数的另一种传参方式:
站在一个实参的角度上,给一个序列加上*,就是将这个序列按照顺序拆分
站在形参的角度上,给变量加上*,就是组合所有传来的值
函数的注释
在定义函数的下一行
这个函数实现了什么功能
参数1说明
参数2说明
返回值说明