1.Python模块
python 中导入模块使用import语法格式:
import module_name
示例1:
导入os模块system('dir')列出当前目录下的所有文件
# _*_ coding:utf-8 _*_ # Author: enzhi.wang import os print(os.system('dir'))
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/练习/module_test.py #由于字符编码问题所以显示为乱码格式 ������ C �еľ��� ϵͳ ������к��� 0000-F80F C:\Users\root\PycharmProjects\S14\��ϰ ��Ŀ¼ 2016/08/02 15:50 <DIR> . 2016/08/02 15:50 <DIR> .. 2016/07/21 14:07 229 day1-1.py 2016/07/29 17:04 306 dic_test.py 2016/07/22 16:06 215 file.py 2016/07/27 11:58 423 file_argv.py 2016/07/24 21:34 597 formatting.py 2016/07/28 08:48 357 for_dict.py 2016/07/21 15:14 361 for_limit.py 2016/07/20 11:10 393 if_el.py 2016/07/22 10:39 975 list.py 2016/07/22 23:00 823 login.py 2016/07/27 14:05 216 master_file.py 2016/08/02 15:50 802 module_test.py
2.pyc文件
.pyc是什么?
1. 过程概述
Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行。
2. 字节码
字节码在Python虚拟机程序里对应的是PyCodeObject对象。
.pyc文件是字节码在磁盘上的表现形式。
3. pyc文件
PyCodeObject对象的创建时机是模块加载的时候,即import。
Python test.py会对test.py进行编译成字节码并解释执行,但是不会生成test.pyc。
如果test.py加载了其他模块,如import util,Python会对util.py进行编译成字节码,生成util.pyc,然后对字节码解释执行。
如果想生成test.pyc,我们可以使用Python内置模块py_compile来编译。
加载模块时,如果同时存在.py和.pyc,Python会尝试使用.pyc,如果.pyc的编译时间早于.py的修改时间,则重新编译.py并更新.pyc。
3.布尔值
布尔值的结果只有两种:真或假,1或0,python中1为真0为假
示例:
C:\Users\root\PycharmProjects\S14>python Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> a = 0 # a等于0时为假,判断是print不会有任何输出 >>> if a:print(a) ... >>> a = 1 # a等于1时为真,判断是print输出a的值 >>> if a:print(a) ... 1
4.三元运算
三元运算的作用就是简化了条件表达式:
语法:
为真时的结果 if 判定条件 else 为假时的结果
示例:
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang a = 1 b = 3 c = 5 if a > b: d = a else: d = c print(d)
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/true_false.py 5
使用三元运算后的写法为:
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang a = 1 b = 3 c = 5 d = a if a > b else c #a大于b则d等于a,否则d等于c print(d)
5.bytes与str转换
encode 编码
decode 解码
示例
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang msg = '我爱北京天安门' print(msg) print(msg.encode(encoding='utf-8')) #编码为二进制格式 print(msg.encode('utf-8').decode('utf-8')) #解码为utf-8
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/bytes_str.py 我爱北京天安门 b'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8' #编码后的bytes格式 我爱北京天安门 #bytes解码为utf-8
6.Python列表
创建一个列表只要把逗号分隔的数据项使用方括号括起来即可,如下所示:
# _*_ coding:utf-8 _*_ # Author: enzhi.wang #import os #print(os.system('dir')) name = ['enzhi','jerry','tom'] age = [26,18,22]
与字符串一样列表的索引从0开始列表可以进行截取组合等。
访问列表中的值:
使用下标的形式访问列表中的值,同样也可以使用方括号的方式截取列表中的值。如下所示:
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name = ['enzhi','jerry','tom'] age = [26,18,22] print('name:',name) print('name[0]',name[0])
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/练习/module_test.py name: ['enzhi', 'jerry', 'tom'] name[0] enzhi
更新列表
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name = ['enzhi','jerry','tom'] print('第二个元素为:',name[2]) name[2] = 'TOM' print('更新后的第二个元素为:',name[2])
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/练习/module_test.py 第二个元素为: tom 更新后的第二个元素为: TOM
删除列表元素
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name = ['enzhi','jerry','tom'] print(name) name.pop(2) #删除第二个元素,不加元素下标默认删除最后一个元素 print('删除第2个元素 :',name)
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/练习/module_test.py ['enzhi', 'jerry', 'tom'] 删除第2个元素 : ['enzhi', 'jerry']
列表切片
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry'] print(names[0]) #取出Wangenzhi print(names[1:3]) #取出Zhaoliu和hehe,1为起始位置,3为结束位置,但不包括3 print(names[0:3]) #取前三个值 print(names[-1]) #当列表内容很多,时要取最后一个值使用-1 print(names[-3:]) #取最后三个
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/list.py ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry'] Wangenzhi ['Zhaoliu', 'hehe'] ['Wangenzhi', 'Zhaoliu', 'hehe'] Jerry ['hehe', 'Tom', 'Jerry']
添加元素
1.使用append在列表最后添加一个新值
names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry'] print(names) names.append('QiaoFeng') #追加一个值 print(names)
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/list.py ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry'] ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry', 'QiaoFeng']
2.使用insert在指定的索引位置插入一个新元素
names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry'] print(names) names.insert(1,'DuanYu') #在第一个索引的位置插入一个新元素 print(names)
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/list.py ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry'] ['Wangenzhi', 'DuanYu', 'Zhaoliu', 'hehe', 'Tom', 'Jerry']
修改元素
names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry'] print(names) names[2] = 'QiaoFeng' #修改元素直接使用列表名加索引位置 = 新值 print(names)
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/list.py ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry'] ['Wangenzhi', 'Zhaoliu', 'QiaoFeng', 'Tom', 'Jerry']
查找元素所在位置的索引
names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry'] print(names) print(names.index('hehe')) #找出hehe所在的索引位置
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/list.py ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry'] 2
统计元素的个数
names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry','hehe'] print(names) print(names.count('hehe')) #统计hehe出现了几次
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/list.py ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry', 'hehe'] 2
清空列表clear()
names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry','hehe'] print(names) names.clear() #清空列表 print(names)
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/list.py ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry', 'hehe'] []
反转列表中的元素reverse()
names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry','hehe'] print(names) names.reverse() print(names)
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/list.py ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry', 'hehe'] ['hehe', 'Jerry', 'Tom', 'hehe', 'Zhaoliu', 'Wangenzhi']
排序sort()
names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry','hehe'] print(names) names.sort() #按照ACSII码表进行排序 print(names)
扩展extend(list_name)
names = ['Wangenzhi','Zhaoliu','hehe','Tom','Jerry','hehe'] print(names) names2 = [1,2,3,4] names.extend(names2) #将names2中的元素加入到names中 print(names)
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day2/list.py ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry', 'hehe'] ['Wangenzhi', 'Zhaoliu', 'hehe', 'Tom', 'Jerry', 'hehe', 1, 2, 3, 4]
7.Python元组
Python元组与列表创建相似,元组使用小括号(),列表使用方括号[],元组中的元素一旦创建则不能被修改。
创建元组
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name1 = ('QiaoFeng','DuanYu','XuZhu','MuRongFu',) name2 = (1,2,3,4,5,) print(name1,name2)
访问元组
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name1 = ('QiaoFeng','DuanYu','XuZhu','MuRongFu',) name2 = (1,2,3,4,5,) print('name1[1]',name1[1]) print('name2[1]',name2[1])
删除元组
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name1 = ('QiaoFeng','DuanYu','XuZhu','MuRongFu',) name2 = (1,2,3,4,5,) print(name1) print(name2) del name2 print('删除后的name2') print(name2)
8.Python字典
字典是(key-value)类型,可以存储任何类型的数据。通过字典的key可以快速的查找到存储的内容
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
#!/usr/bin/env python # -*-coding: utf-8 -*- # Author: enzhi.wang info = { "stu1101":"QiaoFeng", "stu1102":"DuanYu", "stu1103":"XuZhu", }
字典是无序的,因为字典不需要像列表,元祖是通过下标来引用的。
执行上面代码的结果为:
C:\python3\python.exe C:/Users/Administrator/PycharmProjects/S14-python3/练习/dicttest.py {'stu1102': 'DuanYu', 'stu1103': 'XuZhu', 'stu1101': 'QiaoFeng'} #可以看到并没有按照key的顺序展示
取出字典中的值使用dict['key_name']的方式就可以获取到相应的value:
#!/usr/bin/env python # -*-coding: utf-8 -*- # Author: enzhi.wang info = { "stu1101":"QiaoFeng", "stu1102":"DuanYu", "stu1103":"XuZhu", } print(info) print(info['stu1101'] #取key名为stu1101的value
执行上面代码的结果为:
C:\python3\python.exe C:/Users/Administrator/PycharmProjects/S14-python3/练习/dicttest.py {'stu1103': 'XuZhu', 'stu1102': 'DuanYu', 'stu1101': 'QiaoFeng'} QiaoFeng
修改字典中的value
将stu1101的值改为中文
#!/usr/bin/env python # -*-coding: utf-8 -*- # Author: enzhi.wang info = { "stu1101":"QiaoFeng", "stu1102":"DuanYu", "stu1103":"XuZhu", } print(info) info['stu1101'] = "乔峰" print(info['stu1101'])
执行上面代码的结果为:
C:\python3\python.exe C:/Users/Administrator/PycharmProjects/S14-python3/练习/dicttest.py {'stu1102': 'DuanYu', 'stu1101': 'QiaoFeng', 'stu1103': 'XuZhu'} 乔峰
如果key存在就修改其value如果不存在就创建这个key
#!/usr/bin/env python # -*-coding: utf-8 -*- # Author: enzhi.wang info = { "stu1101":"QiaoFeng", "stu1102":"DuanYu", "stu1103":"XuZhu", } print(info) info['stu1104'] = "扫地僧" print(info)
执行上面代码的结果为:
C:\python3\python.exe C:/Users/Administrator/PycharmProjects/S14-python3/练习/dicttest.py {'stu1103': 'XuZhu', 'stu1101': 'QiaoFeng', 'stu1102': 'DuanYu'} {'stu1104': '扫地僧', 'stu1103': 'XuZhu', 'stu1101': 'QiaoFeng', 'stu1102': 'DuanYu'}
删除一个key
#!/usr/bin/env python # -*-coding: utf-8 -*- # Author: enzhi.wang info = { "stu1101":"QiaoFeng", "stu1102":"DuanYu", "stu1103":"XuZhu", } print(info) #del info['stu1101'] info.pop('stu1101') #.pop()等同于上面使用del 删除一个key print(info)
查找一个key
#!/usr/bin/env python # -*-coding: utf-8 -*- # Author: enzhi.wang info = { "stu1101":"QiaoFeng", "stu1102":"DuanYu", "stu1103":"XuZhu", } print(info) resutl = info.get('stu1104') #查找一个Key,存在就返回其value,否则返回None print(resutl)
执行上面代码的结果为:
C:\python3\python.exe C:/Users/Administrator/PycharmProjects/S14-python3/练习/dicttest.py {'stu1101': 'QiaoFeng', 'stu1102': 'DuanYu', 'stu1103': 'XuZhu'} None
循环打印字典
#!/usr/bin/env python # -*-coding: utf-8 -*- # Author: enzhi.wang info = { "stu1101":"QiaoFeng", "stu1102":"DuanYu", "stu1103":"XuZhu", } for i in info: print(i,info[i])
执行上面代码的结果为:
C:\python3\python.exe C:/Users/Administrator/PycharmProjects/S14-python3/练习/dicttest.py stu1102 DuanYu stu1103 XuZhu stu1101 QiaoFeng