Day2:模块、类型、三元运算、列表、元组、字典、
一、模块初识
1、标准模块(库):不需要安装直接可以导入,一般放在/Lib/文件夹下
(1)sys
#Author:licy import sys print(sys.path)#打印环境变量 print(sys.argv)#打印当前文件的相对路径
(2)os
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy import os cmd_res=os.system("dir")#乱码不要紧,直接输出到屏幕,执行命令,不保存结果 print("-----",cmd_res)#0 返回执行结果0-成功,非0-失败 cmd_res=os.popen("dir").read()#执行命令,保存结果 print("*****",cmd_res) os.mkdir("new_dir")#创建目录
2、第三方(库):必须下载安装才可以使用,Django是一个第三方的库,必须下载安装,一般都放在/Lib/site-packages文件夹下
(1)自己写一个简单模块
新建login.py 此文件可以保存在和test.py的同级目录下,或者直接放大/Lib/site-packages文件夹下
#Author:licy username=input("请输入用户名:")
test.py直接引入,然后直接执行
#Author:licy import login #先从当前目录中导入,如果不在就到全局变量中寻找
注:/Lib/site-packages/__pycache__/文件夹下的.pyc的文件是:
其实PyCodeObject则是python编译器真正变异成的结果,我们先简单知道就可以了,当python程序运行时,
编辑的结果则是保存在位于内存中的PyCodeObject中,当python程序结束时,python解释器则将PyCodeObject写回到.pyc文件中,
当python二次运行时,首先程序会在硬盘中寻找.pyc文件,
如果找到,则直接载入,否则就重复上面的过程,所以我们说.pyc文件其实就是PyCodeObject的一种持久保存的方式
二、字符类型
(1)int(整型)
(2)float(浮点型)
(3)布尔型(true/false)
(4)bytes类型:音频、视频
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy #将字符串转换为一个bytes类型 msg="我爱北京天安门" print(msg.encode())#py3中如果没有指定编码,默认是utf-8 print(msg.encode().decode())
三、三元运算
#Author:licy a,b,c=1,3,5 d=a if a>b else c print(d)
四、列表
1、
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy names=['zhangsan','lisi','wangwu','zhaoliu','licy'] print(names[0],names[2])#根据下标取值 print(names[1:3])#切片 顾头不够尾 lisi wangwu print(names[-1])#取最后一个值,未知长度 print(names[-2:])#取最后两个值,省略第二个值 print(names[0:3])#相当于names[:3] print(names[:3]) #列表中增加值 names.append("maqi") print(names) #将sunba插入到lisi前 names.insert(1,"sunba") print(names) #将lisi改为licy names[2]='licy' print(names) #将wangwu删除 #names.remove('wangwu') #del names[3] names.pop(3) print(names) #从列表中找出licy print(names.index('licy')) #统计有几个licy这个人 print(names.count('licy')) #names.clear()#清空 names.reverse()#反转 print(names) names.sort()#排序 根据Ascii进行排序 print(names) names2=[1,2,3,4] names.extend(names2)#合并列表 print(names) del names2 #删除names2
2、深浅copy
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy import copy names=['zhangsan','lisi','wangwu',['jack','tom'],'zhaoliu','licy'] #names2=names.copy()#复制列表 浅copy,只复制第一层的内容,如果还有下一层,它就把下一层的内存地址复制了 #print(names2) names2=copy.deepcopy(names)#深copy names[5]="李春雨" print(names) print(names2) names[3][0]="宅科" print(names) print(names2)
3、循环列表和步长切片
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy names=['zhangsan','lisi','wangwu',['jack','tom'],'zhaoliu','licy'] #range(1,10,2) for i in names:#列表循环 print(i) print(names[0:-1:2])#相当于names[::2]步长切片
4、补充内容
(1)sys模块:是python解释器自带的,c语言写的,集成在内部,所以找不到
(2)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy import copy person=['name',['saving',100]] #浅copy的如下三种方式 ''' p1=copy.copy(person) p2=person[:] p3=list(person) ''' #浅copy用处:copy出两个人,夫妻关系,有一张共同的卡,用来创建联合账号 p1=person[:] p2=person[:] p1[0]='licy' p2[0]='xiaomao' p1[1][1]=50 print(p1) print(p2)
五、元组(tuple)
#Author:licy #只能查不能改,又叫不可变列表 names=('licy','tom')
六、字符串操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy name="my name is\t{name}" print(name.capitalize())#首字母大写 print(name.count("l"))#统计字母个数 print(name.center(50,"-")) print(name.endswith("ve"))#判断字符串以什么结尾 print(name.expandtabs(tabsize=30)) print(name.find('name'))#查找字符串的索引 print(name.format(name="licy")) print(name.format_map({'name':'licy'})) print('ab23'.isalnum()) print('abA'.isalpha()) print('1A'.isdecimal()) print('1A'.isdigit()) print('-1A'.isidentifier())#判断是不是一个合法的标识符(变量) print('33.33'.isnumeric()) print("My Name Is".istitle()) print("My Name Is".isprintable()) print("My Name Is".isupper()) print('+'.join(['1','2','3','4'])) print(name.ljust(50,'*')) print(name.rjust(50,'*')) print('Licy'.lower())#变小写 print('licy'.upper())#变大写 print('\nlicy'.lstrip())#默认去掉左边的空格或者回程车 print('licy\n'.rstrip()) print(' licy\n'.strip()) p=str.maketrans("abcdef","123456") print("licy is a boy".translate(p)) print('llicy'.replace('l','L',1))#替换 print('licyy'.rfind('y')) print('1+2+3+4'.split('+')) print('1+2\n3+4'.splitlines())
七、字典
1、
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy info={ 'stu1101':"licy", 'stu1102':"zhangsan", 'stu1103':"zhaoliu", } print(info)#字典是无序的,没有下标 print(info['stu1101'])#查找 info['stu1101']="李春雨"#修改 print(info) info['stu1104']="李小龙"#增加 print(info) #del info["stu1101"]#删除 #info.pop('stu1102')#删除 #info.popitem()#随便删一个 #print(info['stu1105'])#没有,报错 print(info.get('stu1105'))#查找没有,就返回None print('stu1105' in info)
2、多级字典嵌套及操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy av_catalog = { "欧美":{ "www.youporn.com": ["很多免费的,世界最大的","质量一般"], "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"] }, "日韩":{ "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"] }, "大陆":{ "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"] } } av_catalog['大陆']['1024'][1]="可以在国内做镜像" av_catalog.setdefault("大陆",{"www.baidu.com":[1,2]})#先去字典里取大陆这个值,如果能取到就直接返回,否则创建一个新值 print(av_catalog)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#values >>> info.values() dict_values(['LongZe Luola', 'XiaoZe Maliya']) #keys >>> info.keys() dict_keys(['stu1102', 'stu1103']) #setdefault >>> info.setdefault("stu1106","Alex") 'Alex' >>> info {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} >>> info.setdefault("stu1102","龙泽萝拉") 'LongZe Luola' >>> info {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} #update >>> info {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} >>> b = {1:2,3:4, "stu1102":"龙泽萝拉"} >>> info.update(b) >>> info {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} #items info.items() dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')]) #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个 >>> dict.fromkeys([1,2,3],'testd') {1: 'testd', 2: 'testd', 3: 'testd'}
3、循环字典
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#Author:licy av_catalog = { "欧美":{ "www.youporn.com": ["很多免费的,世界最大的","质量一般"], "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"] }, "日韩":{ "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"] }, "大陆":{ "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"] } } for i in av_catalog:#高效循环 print(i,av_catalog[i]) for k,v in av_catalog.items():#效率不高 print(k,v)