PS:写到第八章才发现,代码框都给写成R了。
8. 模块与包
8.1 理解函数的基础上,看看什么是‘模块’
Python概念层级
- 表达式:创建、处理对象
- 语句:包含表达式
- 逻辑单元:函数或类,由语句组成
- 模块:
.py
代码文件组成模块 - 包:定义一组有关系的文件,或者模块(包是文件夹,模块是其中文件)
- 程序:若干个包+若干个文件
一个案例:
- 脚本1
#模块testmodel.py
def inf():
print('数据大人培养计划Python课程,模块练习')
def power(a):
y = a ** 2
return y
#模块结束
- 脚本2
import script
script.inf()
m = script.power(10)
print(m)
#执行结果
>>>
============== RESTART: C:/Users/Administrator/Desktop/test.py ============== #保证在模块在同一文件夹
数据大人培养计划Python课程,模块练习
100
模块特点:
- 效率高
- 可在多个程序使用
- 不同模块有不同功能组合,通过使用多个模块快速满足程序需求
8.2 模块创建及import指令应用
#阶层函数
def f1(n):
y = 1
for i in range(1, n+1):
y = y * i
return y
def f2(lst, x):
m = []
for i in lst:
if i == x:
continue
else:
m.append(i)
return m
def f3(a, d, n):
s = 0
for i in range(n):
s = s + a
a = a + d
return s
>>>
============= RESTART: C:\Users\Administrator\Desktop\script.py =============
>>> import script
>>> print(f1(6))
720
>>> print(f2([2, 3, 4, 5, 6, 'a', 'c', 23, 3], 'a')
)
[2, 3, 4, 5, 6, 'c', 23, 3]
>>> print(f3(1, 1, 10))
55
模块调用:
- import 模块名
.
函数; - form 模块名 import 函数名
random模块,随机数
#随机数
import random
x = random.random()
y = random.random()
print(x, y)
#区间内随机整数
import random
m = random.randint(50, 100)
print(m)
#随机获取给定元素
st = random.choice([1, 2, 3, 4, 5])
st2 = random.choice('adsfjkjl')
print(st,st2)
#随机获取a中指定b长度的片段,不改变原有序列
import random
lst = list(range(100))
sli = random.sample(lst, 5)
print(sli,lst)
#列表中元素打乱
lst2 = ['a', 'b', 'c', 'f', 'x']
random.shuffle(lst2)
print(lst2)
============= RESTART: C:\Users\Administrator\Desktop\script.py =============
0.42881162556528274 0.12498443753064359
100
5 l
[43, 59, 21, 99, 15] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
['c', 'a', 'f', 'b', 'x']
>>>
time模块:
%y #两位数的年份表示
%Y #四位数的年份表示
%m #月份
%d #月内的某天
%H #24h制
%l #12h值
%M #分钟数
%s #秒
%a #本地简化星期名称
%A #本地完整星期名称
%b #本地简化月份名称
%B #本地完整的月份名称
%c #本地相应的日期表示和时间表示
%j #年内的一天
%p #本地 A.M 或 P.M 的等价符
%U #一年中的星期数,星期天为开始
%w #星期(0-6),星期天为开始
%W #一年中的星期数,星期一为开始
%x #本地相应日期表示
%X #本地相应时间表示
%Z #当前时区名称
%%% #%号本身
import time
print('hello')
time.sleep(2) #程序休眠2秒
print('world!')
print(time.ctime()) #当前时间
print(type(time.ctime()))
print(time.localtime()) #时区时间
print(type(time.localtime()))
a = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(a)
8.3 “包”的概念及Python的包管理工具:pip
包:
当多个功能模块互相联系时,将其组合在一起。
带_init_.py
的文件夹就是一个包
安装包:
pip
:安装和管理Python包的工具,Python3.4之后自带。
pip需要在cmd中运行
pip list
查看已安装的包
pip install + 包的名字
安装
pip uninstall + 包的名字
卸载
安装Excel相关包
Excel.png基本操作:
-
打开Excle文件读取数据
data = xlrd.open_workbook('路径\\文件名.xlsx')
-
获取工作表
table = data.sheets()[0] #通过索引顺序获取
table = data.sheet_by_index(0) #通过索引顺序获取
一般选用这种
table = data.sheet_by_name('sheet1') #通过名称获取
-
获取整行和整列的值(数组)
table.row_walues(i)
table.col_values(i)
-
获取行数和列数
nrows = table.nrows
ncols = table.ncols
-
循环行列表数据
for i in range(nrows):
print table.row_values(i)
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import xlrd
data = xlrd.open_workbook('C:\\Users\\Administrator\\Desktop\\test.xlsx')
table = data.sheet_by_index(0)
nrows = table.nrows
ncols = table.ncols
print(nrows,ncols)
print(table.row_values(0))
print(table.col_values(0))
for i in range(nrows):
print(table.row_values(i))
#读取Excel转换字典
k = list(table.row_values(0))
print(k)
D = []
for i in range(1,nrows):
lst = table.row_values(i)
v1 = []
v1.extend([k[0], lst[0]])
v2 = []
v2.extend([k[1], lst[1]])
m = ([v1,v2])
#print(m)
d = dict(m)
#print(d)
D.append(d)
print(D)
8.4 Windows环境下的爬虫实战01
cmd中:
- cd 工作空间
- pip install 包
- pip list #查看包
- python 文件名 #执行脚本
dashuju.py
和 lianjia.py
需安装 lxml
包
pip install lxml
网友评论