Python基础-day2

2023-07-29,,

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

Python基础-day2的相关教程结束。

《Python基础-day2.doc》

下载本文的Word格式文档,以方便收藏与打印。