一、函数
1、运用函数可提高代码复用性
2、定义函数后,必须调用函数,函数才会被执行
3、需要参数时,就传参数,不需要就可以不传入参。
4、函数的返回值可有一个或者多个,当return多个值,要么用一个变量接收,要么用多个变量接收。
5、函数要不要返回值,要看函数的功能是什么,再决定入参和返回值
6、函数里面定义的变量都是局部变量。
7、函数里只要遇到return,函数立即结束
8、默认值参数,入参传就用传的值,不传就用默认值
9、一个函数只实现一个功能,不要写的很复杂。
#1.74,['1','74'] #-2.45,['2','45'] def is_float(s):#形式参数 s=str(s)#把传入的参数强制转换为字符串类型 if s.count('.')==1:#判断是否有1个小数点 left,right=s.split('.') if left.isdigit() and right.isdigit():#判断左右2边的字符串是否都由数字组成 return True elif left.startswith('-') and left[1:].isdigit() and right.isdigit():#运用切片,下标从1开始 return True#各个分支,只会有一条路可走 return False print(is_float(-11.11))
def cal(a,b):#def定义一个计算函数 c=a+b # print(c) return c#返回调用函数一个值 res=cal(1,6)#调用函数用一个变量来接收返回值 print(res)#输出函数返回接收到的值
def writefile(filename,content):#形参filename,content f=open(filename,'a+',encoding='utf-8')#打开文件 f.write(content)#写入文件 f.close()#关闭文件 writefile('1','2')#调用writefile函数,实参,因为write()方法的入参是str类型,所以传入实参也要是str类型,此函数无需返回值 def writefile(filename,content): with open(filename,'a+',encoding='utf-8') as fw: fw.write(content) writefile('test1','aaa') def readfile(filename): with open(filename,encoding='utf-8') as fw: print('before',fw.read()) fw.seek(0) return fw.read() res=readfile('test1') print('after',res) def readfile(filename): f=open(filename,'a+',encoding='utf-8')
f.seek(0)#a+文件操作模式,记得刚打开文件时,文件指针是指向末尾的,所以要seek(0)一下;W+的文件刚打开时,都会清空文件的 res=f.read() # print('bf',res) f.close() return res res1=readfile('test2') print('af',res1)
#有多个返回值 def more(): name='xiaohei' age='20' score=90 return name,age,score # res=more() # print(res)#当有多个返回值时,可以用一个变量来接收的话,是元组的形式 name1,age1,score1=more()#当有多个返回值时,也可以用多个变量也接收 print(name1) print(age1) print(score1)
二、Json操作
1、json就是一个字符串
2、内存里缓冲区满了,才向磁盘里写
3、jsonson就是一个字符串,长得像字典
4、字典转换字符串---json.dumps()
5、字符串转换字典---json.loads()
6、直接操作文件 ——json.dump()
7、从文件里直接读数据转成字典——json.load()
8、中文问题
9、美观问题
import json dic = { "error_code": 0, "stu_info": [ { "name": "小米", "sex": "男", }, { "name": "红红", "sex": "女", } ] } # with open('test.json','w',encoding='utf-8') as fw: # # s = json.dumps(dic,ensure_ascii=False,indent=8) #把字典转成json,字符串 # # fw.write(s)#写入文件 # json.dump(dic,fw,indent=4,ensure_ascii=False)#直接操作文件,将字典转成字符串后自动写入文件 with open('test.json',encoding='utf-8') as fr: # result = fr.read()#从文件读取内容 # print('result,刚从文件里面读出来的',type(result)) # dic = json.loads(result)#将字符串内容转换成字典 # print('dic,转换完之后的',dic,type(dic)) result = json.load(fr)#直接操作文件,读取文件后转为字典 print('result',type(result))
三、切片
1、print(s[::-1])#如果步长是负数,那么就是从后往前开始取
2、print(l[:3]) #顾头不顾尾
3、非空即真,非0即真
4、print('li',id(li))#查看内存地址
5、循环的时候不要删list里面的元素,会导致下标错乱
6、stu1 = stu——浅拷贝,内存地址不变
7、stu2 = stu1[:]——深拷贝,内存地址改变
8、stu3 = copy.deepcopy(stu1)——深拷贝
四、集合
1、集合天生可以去重
2、集合是无顺序的
3、s = set() #空集合
4、 s.add(1) #添加元素
5 s.remove(1) #删除元素
6、交集——intersection或者 & (2个集合都有的)
7、并集——union或者|(把俩集合加一起,重复的去除)
8、差集——difference或者-(在a集合里面有,在b集合里面没有的,以A为准)
9、对称差集——symmetric_difference或者^ (把两个集合里面都有的去除)
五、列表生成式
# result = [ str(i).zfill(2) for i in range(1,10) if i<8 ] # print(result) # # # result2 = [] # for i in range(1,10): # if i<8: # j = str(i).zfill(2) # result2.append(j) # print(result2)
六、三元表达式
id_card = '410881199211111131' sex = '女' if int(id_card[-2])%2 == 0 else '男' #三元表达式 print(sex)
浙公网安备 33010602011771号