day9 初识函数
1复习
#序列 '''在python中,序列类型包括字符串(普通字符串和unicode字符串)、列表和元组, 所谓序列,即成员有序排列,并且可以通过下边偏移量访问到它的一个或者几个成员。 ''' #今日内容 '''数据库 存储数据和信息用的 本质上和文件没有区别 增删改查更方便了 流程控制:条件判断和各种循环 为什么要有文件处理:内存---->硬盘 ''' #文件操作复习 #文件处理 #打开文件 #open('路径','打开方式 mode=','指定编码方式 encoding=') #打开方式:r w a r+ w+ a+ rb r+b等 #r+ 读写 注意先读后写 不然会覆盖 #编码方式:utf-8 #操作文件 #读 #read 一次性读 #readline 一行一行读 #不知道在哪儿结束 视频图片等必须按照字节读不能一行一行读 #readlines一次性读按行切分放列表 #for循环读文件最好:从头到尾内存只有一行文件内容 #写 #write \n可以换行(打印的还是换行符会换行不会打印出“\n” 添加的时候会把‘\n’添加进去 #光标:文件指针 #seek 按字节指定光标移到到某个位置 #tell 获取光标当前的位置 #truncate 按字符截取文件 返回字符数 #关闭文件 #close() #修改文件 #open调用系统文件 windows系统默认gbk编码 如果不指定编码方式 因为python是utf-8会乱码 # with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8')as f2: # for line in f: # if "星儿" in line: # line=line.replace('星儿','阿娇') # #写文件 # f2.write(line) # import os # os.remove('小护士班主任')#删除文件 # os.rename('小护士班主任.bak','小护士班主任')#重命名文件 # s='alex' # s='_'.join(s) # print(s)
2初识函数
s='jjjjjj' def my_len(): #定义/声明一个函数 i=0 for k in s: i+=1 print(i) length=my_len() #调用函数 带括号 print(length) #定义了之后 可以在任何需要它的地方调用 没有返回长度 只是单纯打印 <<< 6 None
#return返回值的三种情况 #没有返回值:返回None #不写return 只写return:return结束一个函数的继续 return None 相当于return #返回一个值 #可以返回任何数据类型 只要返回就可以接收到 如果在一个程序中多个return,那么只执行第一个return #返回多个值 #用一个或多个变量接收 得到一个元祖 def func(): l=['qq','ww'] for i in l: print(i) if i=='qq': return print('*'*6) print(func()) def func(): return {'f':1} print(func()) def func2(): return 1,2,3 #相当于(1,2,3),所以可以一个或3个变量接收 元祖列表字典都能解包 a,b,c=func2() print(a) def my_len(s): i=0 for k in s : i+=1 return i a=my_len('hhhhh') b=my_len([1,2,3,4,5,6]) print(a,b) def f2(l1): f1(l1) for i in l1: print(i,end='') def f1(l1): for i in l1: print(i,end='') f2([1,2,3,4,5]) def my_sum(a,b): # print(a,b) res=a+b return res ret=my_sum(1,2) print(ret) <<< qq None {'f': 1} 1 5 6 12345123453
传参
#站在实参的角度上:按照位置传参 关键字传参 混着用的时候必须先位置传参然后关键字传参 #站在形参的角度上:位置参数:必须传 有几个参数传几个值 默认参数:不传就用默认的 传了就用传的 def classmates(name,gender='男'): print('%s:%s'%(name,gender)) classmates(111,'女') <<< 111:女
动态参数以及形参顺序
#动态参数:*args 接收所有位置参数 组织成一个元祖 **kwargs 接收所有关键字传参的值 组织成一个字典 #形参的顺序:位置参数 *args 默认参数 **kwargs def sum(*args): i=0 for k in args: i+=1 return i print(sum(1,2,3,6)) def func(**kwargs): print(kwargs) return kwargs print(func(a1_=1,b=2,c=3)) def func(*args,default=1,**kwargs): print(args,default,kwargs) func(1,2,a=3,b=4) <<< 4 {'a1_': 1, 'b': 2, 'c': 3} {'a1_': 1, 'b': 2, 'c': 3} (1, 2) 1 {'a': 3, 'b': 4}
动态参数的另一种传参方式
#动态参数的另一种传参方式 def func(*args):#站在形参角度上,给一个变量加上*,就是组合所有传来的值 print(args) func(1,2,3) l=(1,2,3,4,4) func(l) func(*l) #站在实参角度上,给一个序列加上*,就是将这个序列按顺序打散 d={'a':1,'b':2} func(*d) def func(**kwargs): print(kwargs) func(a=1,b=2) d={'a':1,'b':2} func(**d) <<< (1, 2, 3) ((1, 2, 3, 4, 4),) (1, 2, 3, 4, 4) ('a', 'b') {'a': 1, 'b': 2} {'a': 1, 'b': 2}
函数的注释
#函数的注释 # def func(): ''' 这个函数实现了什么功能 参数1: 参数2: return: 字符串或者。。。 ''' # pass ''' 文件的修改 函数 函数的定义 函数的调用 函数的返回值 函数的参数 形参:位置参数:必须传实参 *args:可以接收任意多个位置参数 默认参数:可以不传 **kwargs:可以接受任意多个关键字参数 实参:按照位置传参 按照关键字传参 函数 :内置函数 自定义函数'''
li=['alex','wusir','rain'] print('*'.join(li)) print('s s ssss'.split(' *')) <<< alex*wusir*rain ['s s ssss']
#1-2+3...+99 sum=0 for i in range(1,100): if i%2==1: sum+=i else: sum-=i print(sum) for i in range(10,-1,-1): print(i,end='') <<< 50 109876543210
#实现一个整数加法计算器 dic={'最终计算结果':结果} content=input('请输入内容:') content_list=content.split('+') print(content_list) sum=0 for i in content_list: sum+=int(i) #int默认去空格 print(sum) <<< 请输入内容:2 +99 ['2 ', '99'] 101
#将大于66得数保存到字典的第一个key中 小于66的保存到第二个key中 li=[11,22,33,44,55,77,88,90] result={} for i in li: if i>66: if 'key1'not in result: result['key1']=[] result['key1'].append(i) else: if 'key2'not in result: result={'key2':[]} result['key2'].append(i) print(result) li=[11,22,33,44,55,77,88,90] result={} for row in li: result.setdefault('key1',[]) result.setdefault('key2',[]) if row >66: result['key1'].append(row) else: result['key2'].append(row) print(result) <<< {'key2': [11, 22, 33, 44, 55], 'key1': [77, 88, 90]} {'key1': [77, 88, 90], 'key2': [11, 22, 33, 44, 55]}
user_list=[{'username':'barry','password':1234}, {'username':'alex','password':'asdf'}] board=['zs','lxs','wemz'] while 1: username=input('<<<') if username.upper()=='Q':break password=input('<<<') for i in board: if i in username: username=username.replace(i,'*'*len(i)) user_list.append({'username':username,'password':password}) print({'username':username,'password':password}) print(user_list) <<<hahaha <<<111 <<<q {'username': 'q', 'password': '111'} [{'username': 'barry', 'password': 1234}, {'username': 'alex', 'password': 'asdf'}, {'username': 'q', 'password': '111'}]
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步