自己做网站引用别人的电影,如何建设远程教育网站,广告设计公司需要资质吗,婚庆网站开发背景本节主要内容: 1. 模块的简单认识 2. collections模块 3. time时间模块 4. random模块 5. os模块 6. sys模块 一. 模块的简单认识 什么是模块. 模块就是我们把装有特定功能的代码进行归类的结果. 从代码编写的单位 来看我们的程序, 从小到大的顺序: 一条代码 语句块 … 本节主要内容: 1. 模块的简单认识 2. collections模块 3. time时间模块 4. random模块 5. os模块 6. sys模块 一. 模块的简单认识 什么是模块. 模块就是我们把装有特定功能的代码进行归类的结果. 从代码编写的单位 来看我们的程序, 从小到大的顺序: 一条代码 语句块 代码块(函数, 类) 模块. 我们目前写 的所有的py文件都是模块. 引入模块的⽅方式: 1. import 模块 2. from xxx import 模块 关于这两种写法. 我们后⾯面还要继续介绍. 在之前的学习中, 我们已经用过了一些基本的 模块了了. 比如, random, os, sys, collections等等. 那我们目前⽤用到的所有模块都是python内 置的模块.不需要额外安装. 在后⾯面学习⾼高级框架的内容的时候. 可能需要我们⾃行安装一些 第三方提供的模块. 二. collections模块 collections模块主要封装了一些关于集合类的相关操作. 比如, 我们学过的Iterable, Iterator等等. 除了了这些以外, collections还提供了一些除了基本数据类型以外的数据集合类 型. Counter, deque, OrderDict, defaultdict以及namedtuple 1. Counter counter是一个计数器. 主要用来计数 计算一个字符串中每个字符出现的次数: from collections import Counter
s I am sylar, I have a dream, freedom....
qq counter(s)
print(s) 2. deque 双向队列 (重点)说双向队列列之前我们需要了了解两种数据结构. 1. 栈, 2. 队列 1. 栈: FILO. 先进后出 - 砌墙的砖头, 老师傅做馒头 2. 队列: FIFO. 先进先出 - 买火车票排队, 所有排队的场景 # class StackFullError(Exception):
# pass
# class StackEmptyError(Exception):
# pass
#
# class Stack:
# def __init__(self, size):
# self.index 0 # 栈顶指针
# self.lst []
# self.size size
#
# # 给栈添加元素
# def push(self, item):
# if self.index self.size:
# # 栈已经满了. 不能再装东西了
# raise StackFullError(the stack is full)
# self.lst.insert(self.index, item) # 对于空列表. 需要insert插入内容
# # self.lst[self.index] item # 把元素放到栈里
# self.index 1 # 栈顶指针向上移动
#
# # 从栈中获取数据
# def pop(self):
# if self.index 0:
# raise StackEmptyError(the stack is empty)
# self.index -1 # 指针向下移动
# item self.lst.pop(self.index) # 获取元素. 删除.
# return item
# s Stack(5)
# s.push(馒头1号)
# s.push(馒头2号)
# s.push(馒头3号)
# s.push(馒头4号)
# s.push(馒头5号)
#
# print(s.pop())
# print(s.pop())
# print(s.pop())
# print(s.pop())
# print(s.pop()) 队列 # import queue
# #
# q queue.Queue() # 创建队列
# q.put(李嘉诚)
# q.put(陈冠希)
# q.put(周润发)
# q.put(吴彦祖)
#
# print(q.get())
# print(q.get())
# print(q.get())
# print(q.get())
# # print(q.get()) # 队列中如果没有元素了. 继续获取的话. 会阻塞
# print(拿完了) 双向队列 # from collections import deque
#
# q deque() # 创建一个双向队列
# q.append(高圆圆)
# q.append(江疏影)
# q.appendleft(赵又廷)
# q.appendleft(刘大哥)
# # 刘大哥 赵又廷 高圆圆 江疏影
# print(q.pop()) # 从右边获取数据
# print(q.pop())
# print(q.popleft()) # 从左边获取数据
# print(q.popleft())
# print(q.pop()) 3. namedtuple 命名元组 # from collections import namedtuple
#
# point namedtuple(Point, [x, y, z]) # 这个就相当于写了一个类
# # class point:
# # def __init__(self, x, y):
# # self.x x
# # self.y y
#
# p point(5, 18, 88)
# print(p.x)
# print(p.y)
# # p.x 19 # 终归是一个元组
# print(p) 4. orderdict和defaultdict # dic {a:娃哈哈, b:薯条, c:胡辣汤}
# print(dic) # 最底层一定是无序的. 最底层是hash
#
# from collections import OrderedDict
# # 按照我们存储的顺序保存数据
# od OrderedDict({ b:薯条,a:娃哈哈, c:胡辣汤})
# print(od) # lst [11,22,33,44,55,66,77,88,99]
# d defaultdict(list)
# for el in lst:
# if el 66:
# d[key1].append(el) # key1默认是不存在的. 但是可以拿key1. 一个空列表.
# else:
# d[key2].append(el)
# print(d) 三. time 时间模块(重点) 时间模块是我们要熟记的. 到后面写程序的时候经常能用到. 比如, 如何计算时间差. 如何按照客户的要求展示时间. 等等. import time print(time.time()) # 1538927647.483177 系统时间 日期格式化的标准: %y 两位数的年年份表示00-99 %Y 四位数的年年份表示000-9999 %m ⽉月份01-12 %d ⽉月内中的⼀一天0-31 %H 24⼩小时制⼩小时数0-23 %I 12小时制⼩小时数01-12 %M 分钟数0059 %S 秒00-59 %a 本地简化星期名称 %A 本地完整星期名称%b 本地简化的⽉月份名称 %B 本地完整的⽉月份名称 %c 本地相应的⽇日期表示和时间表示 %j 年年内的⼀一天001-366 %p 本地A.M.或P.M.的等价符 %U ⼀一年年中的星期数00-53星期天为星期的开始 %w 星期0-6星期天为星期的开始 %W ⼀一年年中的星期数00-53星期⼀一为星期的开始 %x 本地相应的⽇日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身 从时间戳 - 格式化时间 t time.localtime(1542513992) # 时区 gmtime() 格林尼治时间.print(t)str_time time.strftime(%Y-%m-%d %H:%M:%S, t)print(str_time) 用户输入一个时间. 变成时间戳# 格式化时间 - 时间戳# 2018-11-18 12:06:32# s 2018-11-18 12:06:32# t time.strptime(s, %Y-%m-%d %H:%M:%S) # string parse time# print(t)# # 结构化时间 - 时间戳# ss time.mktime(t)# print(ss)# print(time.strftime(%Y年%m月%d日))## # 中文# import locale# locale.setlocale(locale.LC_CTYPE, chinese) # 时间差 1小时30分# begin 2018-11-14 16:30:00# end 2018-11-14 18:00:00# # 用时间戳计算出时间差(秒)# begin_struct_time time.strptime(begin, %Y-%m-%d %H:%M:%S)# end_stract_time time.strptime(end, %Y-%m-%d %H:%M:%S)## begin_second time.mktime(begin_struct_time)# end_second time.mktime(end_stract_time)## # 秒级的时间差 180000# diff_time_sec abs(begin_second - end_second)## # 转换成分钟# diff_min int(diff_time_sec//60)# print(diff_min)## diff_hour diff_min//60 # 1# diff_min_1 diff_min % 60 # 30## print(时间差是 %s小时%s分钟 % (diff_hour, diff_min_1)) # begin 2019-11-14 16:30:00# end 2018-11-14 18:00:00# # 用时间戳计算出时间差(秒)# begin_struct_time time.strptime(begin, %Y-%m-%d %H:%M:%S)# end_stract_time time.strptime(end, %Y-%m-%d %H:%M:%S)## begin_second time.mktime(begin_struct_time)# end_second time.mktime(end_stract_time)## # 秒级的时间差 180000# diff_time_sec abs(begin_second - end_second)## # 转化成结构化时间# t time.gmtime(diff_time_sec) # 最好用格林尼治时间。 否则有时差# print(t)## print(时间差是%s年%s月 %s天 %s小时%s分钟 % (t.tm_year-1970, t.tm_mon-1, t.tm_mday-1,t.tm_hour, t.tm_min )) random模块 import random # print(random.randint(1,2)) # [start, end]# print(random.random()) # (0,1)之间的小数# print(random.uniform(3,10)) # 3 10 的随机小数 # n random.randrange(1, 10, 3) # [1, 10) 从奇数中获取到随机数# while n ! 10:# n random.randrange(1, 10, 3) # for i in range(1, 10, 3):# print(i) print(random.choice([1, 周杰伦, [盖伦, 胡辣汤]])) #print(random.sample([1, 23, [4, 5]], 2)) # 列表元素任意2个组合 lst [周杰伦, 昆凌, 马化腾, 马丽, 沈腾, 秋雅]random.shuffle(lst)print(lst) os模块 # os.makedirs(dirname1/dirname5) # 创建文件夹目录结构# os.removedirs(dirname1/dirname5) # 删除文件夹, 如果文件夹内没有东西。 就可以删除。 否则报错 # os.mkdir(dirname/哈哈) # mkdir如果父级目录不存在。 报错# os.rmdir(dirname) # 删除文件夹 # print(os.listdir(../)) # 获取到文件夹内的所有内容. 递归 # print(os.stat(dirname)) # linux # os.system(dir) # 直接执行命令行程序# s os.popen(dir).read()# print(s) # print(os.getcwd() ) # 当前程序所在的文件夹 ## print(os.path.abspath(../day020 继承) ) # 获取绝对路径# print(os.path.split(D:\python_workspace\day020 继承)) # 拆分路径 (D:\\python_workspace, day020 继承)# print(os.path.dirname(D:\python_workspace\day020 继承)) # D:\python_workspace# print(os.path.basename(D:\python_workspace\day020 继承)) # day020 继承## print(os.path.exists(dirname)) # 判断文件是否存在# print(os.path.isabs(D:\python_workspace\day020 继承)) # 是否是绝对路径## print(os.path.isfile(01 今日主要内容)) # 是否是文件# print(os.path.isdir(dirname)) # 是否是文件夹## print(os.path.getsize(01 今日主要内容) ) # 文件大小 # print(胡辣汤, 传盛, big, sepsmall) # print(c:os.sep胡辣汤) # \\/ 文件路径的分隔符 # print(os.name) # nt import sys# sys.exit(1) # 正常退出 # print(sys.version)# print(sys.platform) # 平台名称 print(sys.path) # 搜索模块的路径sys.path.append(e:/)import mastermaster.chi() os.stat() 属性解读: stat 结构: st_mode: inode 保护模式 st_ino: inode 节点号。 st_dev: inode 驻留留的设备。 st_nlink: inode 的链接数。 st_uid: 所有者的⽤用户ID。 st_gid: 所有者的组ID。 st_size: 普通⽂文件以字节为单位的⼤大⼩小包含等待某些特殊⽂文件的数据。 st_atime: 上次访问的时间。 st_mtime: 最后⼀一次修改的时间。 st_ctime: 由操作系统报告的ctime。在某些系统上如Unix是最新的元数据更更改的时间在 其它系统上如Windows是创建时间详细信息参⻅见平台的⽂文档。 转载于:https://www.cnblogs.com/DanielYang11/p/9959962.html