python之路(sed,函数,三元运算)
一、sed集合
1、set无序,不重复序列
2、创建
1 se = {11,22,33,33,44} 2 list() #只要是一个类加上()自动执行 list __init__ 3 list = [11,22] 4 5 s1 = set(list) 6 print(s1) 7 8 #创建集合 9 s1 = {11,22} 10 s2 = set(‘可循环的‘) 11 12 #操作集合 13 s = set() 14 print(s) 15 s.add(123)#可追加不可重复 16 s.add(123) 17 s.clear() 18 print(s)
3、功能
1 #取不同都元素 2 s1 = {11,22,33} 3 s2 = {22,33,44} 4 s1.difference(s2) #s1中存在s2中不存在的11 5 s2.difference(s1) #s2中存在s1中不存在的44 6 s3 = s1.symmetric_difference(s2)#取s1,s2不同的值11,44 7 print(s3) 8 s1.difference_update(s2)#把s1中存在s2中不存在的更新到s1 9 s1.symmetric_difference_update(s2)#取s1,s2不同的值11,44更新到s1 10 print(s1) 11 12 13 #删除 14 s1 = {11,22,33} 15 s1.discard(11) #指定移除11,如果没有移除对象不报错也不移除 16 s1.remove(1111)#指定移除,如果额没有移除对象,则报错 17 ret = s1.pop()#随机移除,移除内个元素,就把内个元素赋值给ret 18 print(ret) 19 20 #取并集 21 s1 = {‘aa‘} 22 list = [11,22,33,44] 23 s1.update(list) #加一个迭代的元素,更新到s1,s1的初始值不能为空 24 print(s1) 25 26 27 s1 = {‘aa‘} 28 list = [11,22,33,44] 29 s1.update(list) #加一个迭代的元素,更新到s1,s1的初始值不能为空 30 print(s1)
二、函数
1、函数结构
1 # def f1(): 2 # asdad 3 # adfasad 4 # adsfasdf 5 # 1、def关键字,创建函数 6 # 2、函数名 7 # 3、() 8 # 4、函数体 9 #5、返回值
2、函数特性
1 def f1(): 2 print(123) 3 return ‘111‘ 4 print(456) 5 ret = f1() #下函数中,一旦执行return,函数执行过程立即终止 6 #默认返回值None
3、各种参数
1 #1、普通参数(将严格按照顺序讲师级参数赋值给形式参数) 2 #2、默认参数(必须防止在参数列表的最后) 3 #3、指定参数(将实际参数赋值给形式参数) 4 #4、* 默认将传入的参数全部放在一个元组里,f1(*li) 5 # ** 默认将传入的参数全部放在一个字典里,f1(**dic) 6 7 def send(xxoo,content,xx): #普通参数一一对应 8 print(‘发送成功‘,xxoo,content,xx) 9 return True 10 while True: 11 em = input(‘输入邮箱‘) 12 result = send(em,‘SB‘,‘ok‘) 13 if result == True: 14 print(‘成功‘) 15 else: 16 print(‘失败‘) 17 18 19 def send(xxoo,content,xx=‘ok‘): #默认参数,可以输入两个,则xx等于ok,输入三个则xx等于输入值 20 print(‘发送成功‘,xxoo,content,xx) #如果给某个参数设置为默认参数,那么这个参数必须放在最后 21 return True 22 send(‘name‘,‘zk‘) 23 24 def send(xxoo,content): #指定参数 25 print(xxoo,content) 26 return True 27 send(content=‘123‘,xxoo=‘abc‘) 28 29 30 def f1(*args): #动态参数* 31 print(args) 32 f1(11,22,33,44) #参数放在一个元组中 33 34 li = [11,22,33,44] 35 f1(li) #把列表作为一个元素 36 f1(*li) #把列表里的每一个元组作为元组里的一个元素 37 38 39 def f1(**args): #动态参数** 40 print(args) 41 f1(name=‘alex‘) #指定参数放在一个字典中 42 dic={‘k1‘:‘v1‘,‘k2‘:‘v2‘} 43 f1(kk=dic) 44 f1(**dic) #把字典赋值给动态参数
3、格式化输出
1 #格式化输出 2 #str format格式化输出 3 s1 = "i am {0}, age {1}".format("alex", 18) 4 print(s1) 5 s2 = "i am {0}, age {1}".format(*["alex", 18]) 6 print(s2) 7 8 s1 = "i am {name}, age {age}".format(name=‘alex‘, age=18) #前面写的name后面传入参数时必须也是name 9 dic={‘name‘:‘alex‘,‘age‘:18} 10 s2 = "i am {name}, age {age}".format(**dic) 11 print(s1,‘\n‘,s2)
4、def执行顺序
1 def f1(a1, a2): 2 return a1 + a2 3 def f1(a1, a2): 4 return a1 * a2 5 ret = f1(8, 8) #从上向下执行 ret=64,第一个f1不生效 6 print(ret)
5、传参数
1 def f1(a1): 2 a1.append(999) 3 li = [11,22,33,44] 4 f1(li) 5 print(li) #li=11,22,33,44,999#强调传的是引用所以列表会发生改变
6、全局变量
1 #全局变量,所有的作用域里都可读 2 #***对全局变量进行【重新赋值】,需要global*** 3 NAME = ‘zkk‘ 4 def f1(): 5 age = 18 6 global NAME # 表示,name是全局变量 7 NAME = "123" 8 print(age, NAME) 9 def f2(): 10 age = 19 11 print(age, NAME) 12 f1() 13 f2() 14 print(NAME)
三、三元运算
1 if 1 == 1: 2 name = ‘alex‘ 3 else: 4 name = ‘SB‘ 5 print(name) 6 7 name = ‘alex‘ if 1 == 1 else ‘sb‘ #if后面是条件,条件成立执行if前面的,否则执行else后面的 8 print(name) 9 10 def f1(a1): 11 return a1 + 100 12 ret = f1(10) 13 print(ret) 14 f2 = lambda a1: a1 + 100 #f2函数名,a1参数,函数体a1+100,只能一行 15 r2=f2(1) 16 print(r2)
四、文件操作
1、打开文件
1 # f = open(‘db‘, ‘r‘) # 只读 2 # f = open(‘db‘, ‘w‘) # 只写,先清空原文件 3 # f = open(‘db‘, ‘x‘) # 文件存在,报错;不存在,创建并只写 4 # f = open(‘db‘, ‘a‘) # 追加 5 6 f = open(‘db‘,‘r‘,encoding=‘utf-8‘) 7 data = f.read() 8 print(data,type(data)) 9 f.close() 10 11 f = open(‘db‘,‘r+‘,encoding=‘utf-8‘) 12 #如果模式无b,则read按照字符读取 13 data = f.read(1) 14 print(f.tell()) #调整你当前的位置(字节) 15 f.seek(f.tell())#把当前的指针位置向后覆盖,以字节的方式找 16 f.write(‘777‘) 17 f.close()
2、操作文件
1 tell() 获取当前指针位置(字节) 2 seek(1) 指针跳转到指定位置(字节) 3 4 f = open(‘db‘,‘a‘) #强刷刷新 5 f.write(‘123‘) 6 f.flush() 7 input(‘assdafa‘) 8 9 f = open(‘db‘,‘w‘) 10 f.readable() 11 print(f.readable()) #查看是否可读 12 13 14 f = open(‘db‘,‘r+‘,encoding=‘utf-8‘) 15 f.seek(3) 16 f.truncate()#截断,根据指针位置 17 f.close() 18 19 for循环文件对象 f=open(xxx) 20 for line in f: 21 print(line)
3、关闭文件
1 f.close() 2 with open(‘xb‘) as f: 3 pass 4 5 with open(‘db‘,‘r‘,encoding=‘utf-8‘) as f,open(‘db2‘,‘w‘,encoding=‘utf-8‘) as f2: 6 times =0 7 for line in f1: #一边读取一边写 8 if times <= 10: 9 f2.write(line) 10 else: 11 break 12 13 14 with open(‘db‘,‘r‘,encoding=‘utf-8‘) as f1,open(‘db2‘,‘w‘,encoding=‘utf-8‘) as f2: 15 for line in f1: 16 print(line,type(line)) 17 new_str = line.replace(‘alex‘,‘st‘) 18 f2.write(new_str)#同时打开两个文件
五、json
1 import json 2 inp_str =‘[11,22,33,44]‘ 3 inp_list=json.loads(inp_str) #字符串转换成列表 4 print(inp_list) 5 6 inp_str =‘{"k1":123, "k2": "wupeiqi"} ‘ #内部必须是双引号 7 inp_dic = json.loads(inp_str) # 根据字符串书写格式,将字符串自动转换成 字典类型 8 print(inp_dic)
六、内置变量
1 # utf-8 一个汉字:三个字节 2 # gbk 一个汉字:二个字节 3 # utf-8 4 # 一个字节8位,一个汉字三个字节 5 6 7 #字节转化成字符串 8 new_str = str(bytes("李杰", encoding="utf-8"), encoding="utf-8") 9 new_byt=bytes("李杰", encoding="utf-8") 10 new_str2 = str(b‘\xe6\x9d\x8e\xe6\x9d\xb0‘,encoding=‘utf-8‘) 11 print(new_str2,new_byt) 12 13 14 a=bytes(‘李杰‘,encoding=‘utf-8‘) 15 b=bytes(‘张‘,encoding=‘utf-8‘) 16 print(a,‘\n‘,b)
时间: 2024-10-24 20:19:31