1.模块初识
在Python中,模块分为两种:
(1)标准库
标准库无需安装,只要在使用的时候import就可以使用了
(2)第三方库
第三方库必须下载安装之后才能够引入使用
下面介绍两个基本的模块:
(1)os模块
os模块是和操作系统交互的模块,可以调用操作系统的一些命令。其常用的一些方法有:
a) os.system(“操作系统命令”) 返回命令执行状态码 0表示成功 :该方法只执行命令,不保存结果
b) os.popen(“操作系统命令”) 该命令将结果存到内存中,需要使用read()方法读取出来 例:os.popen(“命令”).read()
c) os.mkdir(“目录名”) 创建一个新目录
(2)sys模块
sys模块是Python解释器自带的使用C语言编写的模块,其常用的一些方法有:
a) sys.path 获取一些路径
b) sys.argv 获取相对路径和接受传递的参数,以列表的形式表示
可以通过列表取值的方式获取相应的参数值
(3)自定义模块
引入自定义的模块或者第三方的模块,需要把模块放在site-packages目录下,在导入模块的时候,会从本地目录下开始找,然后去环境变量下找
注意:自己定义模块不能与标准模块名字相同
2.什么是Pyc文件
3.三元运算
语法:result = value1 if 条件 else value2
4.Bytes类型
Python3 最重要的特性是对文本和二进制数据作了更为清晰的区别,文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任意隐式的方式混用str和bytes,正是这使得两者的区别更为清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数中。
字符串和二进制之间可以进行相互转化,转化方式如下:
字符串和二进制数据相互转化的例子:
字符串转成二进制场景:socket数据传输(在python3中只能传二进制)
5.元组和列表
列表: names = [“zhangsan”,”lisi”,”wangwu”]
通过坐标索引取值,下标从0开始 names[0]的值为zhangsan
切片:取多个值,例取出zhangsan和lisi names[0:2] 列表切片 不包括names[2]
在不知道数组长度的时候获取最后一个元素names[-1]
知识点:从右边取值时 下标从-1开始
获取lisi和wangwu的值names[-2:]
(注意:因为截止下标取不到值,省略后即可取到最后的值)
跳着切片: 指定步长
name[0:3:2] 2是步长
追加:
names.append(“zhangyong”)
插入:
插入到谁的前面,就写谁的坐标
如在lisi前面插入xuzhi
names.insert(1,”xuzhi”)
修改:
直接复制即可 names[2] = “其他值”
删除:
names.remove(“具体值”)
或者 del names[索引]
或者 names.pop() 如果不给参数,默认是删除最后一个元素,也可以指定具体索引删除
根据值找下标
names.index(“具体值”)
names.reverse() 列表反转
names.sort() 按照字母顺序排序
names.extend(另一个元组) 合并另一个元组
copy方法(浅copy,复制的是第一个列表的引用)
复制一份元组
Names2 = names.copy()
注意:列表中嵌套的列表其实是存储的引用,当在names中修改第一层的值时,name2中不发生变化。 当修改names中的子列表的值时,name2中也会发生变化
列表中可以在嵌套列表
浅copy的三种方式:
(1)copy.copy(names)
(2)names[:] (全部切片 0:-1 0可以省略 -1省略可以取到最后一个值)
(3)list(names) (工厂模式)
浅copy应用实例:夫妻双方公有财产 (创建联合账号)
Person = [“name”,[“saving”,100]] 模板
Man = person[:]
Woman = person[:]
Man[0] = “zhangsan”
Woman[0] = “lisi”
二者有着共同的子列表
copy模块(可以使用该模块中的深copy)
import copy
name2 = copy.deepcopy(names)
列表循环:
for i in names :
print(i)
enumerate方法:可以将获取列表元素对应的索引:
如列表为:a = [“1”,”2”,”3”]
则enumerate(a) 为[(0,”1”),(1,”2”),(2,”3”)]
在列表循环的时候,可以使用该方法获取到索引信息
for index,value in enumerate(a):
print(index,value)
元组:和列表类似,但是一旦创建便不能修改,称为只读列表,只能用于查
格式:names = (“zhangsan”,”lisi”,”wangwu”)
只有两个方法:
count:
index:
6.字符串常用操作
Str = “zhangyong”
Str.capitalize() 首字母大写
Str.count(“a”) 统计某个子串的个数,可以指定起始位置
Str.center(50,”-”) 一共打印50个字符,不够的用-填充,str在中间
Str.endswith(“”) 判断字符串以什么结尾 比如判断邮箱以什么结尾
Str.find(“”) 查找字符或字符串首字母所在的索引
Str.format() 和str.format_map(“传字典”) 功能类似
Str.isalnum() 判断是否只有字母和阿拉伯数字
Str.isalpha() 判断只有英文字母
Str.isdigit() 判断是否只有数字
Str.isidentifier() 判断是不是一个合法的标识符
Str.islower()是否是小写
Str.issupper()是否是大写
“+”.join([“”,””,””]) 将列表转换成字符串,以+号间隔
Str.ljust(50,“*”) 50个字符,str不够的地方在右侧用*补全
Str.rjust(50,”*”) 50个字符,str不够的地方在左侧用*补全
Str.lower() str.upper() 大写转小写 小写转大写
lstrip() 和 rstrip() strip() 会去掉空格和回车
split() 将字符串按照指定字符分割成列表
swapcase() 大小写反转
Str.replace(“old”,”new”,location) 替换字符 location省略表示替换所有的
7.字典
Key,value的数据类型,和json串类似
字典特性: 无序、去重
定义字典:info = {“key”:value,””:””}
取值:info[“key”] 该方法如果key不存在则会出错 另一个方法info.get(“key”)
Info[“key”] = value key如果存在则修改值,如果不存在则添加一个
删除一个键值对:del info[“key”] or info.pop(“key”) info.popitem()随机删除一个
判断key是否在字典中:”key” in info 返回Bool类型
Info.values() 打印所有的值
Info.keys()打印所有的key
Info.setdefault(“key”,value) 如果key存在,则不变,否则添加一个新的值
Info.update(另一个字典) 批量更新或添加字典
Info.items() 把字典转成列表
Info.fromkeys([“”,””],defaultValue) 创建一个默认的字典,和info没有关系
注意:这里defaultValue的引用是赋值给所有的key 即改变某个key的值,其他的也会变化
字典循环:
For I in info :
Print(i,info[i])
另一个方法
For k,v in info.items():
Print(k,v)
第一个方法更高效
8.其他琐碎知识点
1. type()
查看某一变量的数据类型
2. 两个**表示次方
3. 判断是否为数字 isdigit()
4. 高亮输出:
5. 退出程序使用exit()方法
三级列表练习题:
# 张永 #三级菜单程序 menu = { "北京":{ "海淀":["中电15所","中关村"], "朝阳":["国贸","奔驰"], "昌平":["老男孩","尚硅谷"] }, "河北":{ "石家庄":["石家庄学院","铁道大学"], "邯郸":["丛台公园","龙湖公园"], "衡水":["衡水中学","衡水湖"] }, "山东":{ "济南":["趵突泉","山东大学"], "聊城":["冠县","轴承"] } } exit_flag = False while not exit_flag: for i in menu: print(i) choose = input(">>>请选择:") if choose in menu: #输入在字典中 while True: for subMenu in menu[choose]: print("\t",subMenu) choose1 = input("\t>>>请选择:") if choose1 in menu[choose]: for th_menu in menu[choose][choose1]: print("\t\t",th_menu) choose2 = input("\t\t>>>请选择:") if choose2 == "b": continue elif choose2 == "bb": break elif choose1 == "b": break else: print("所输入的省份不在列表中")