常用模块-01

本节主要内容:

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 分钟数(00=59) %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", sep="small")
# 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 master
master.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php7性能原理,php7卓越性能背后的原理有哪些?

喷答主 朱涵俊 说php没法常驻内存的人&#xff0c;是没理解答主的意思&#xff0c;看不下去了我要出来解释一波。本来想发评论下面的结果字数限制。。匿了-------------------技术分割线------------------99%的网站都会用到mvc架构&#xff0c;那php的框架是怎么工作的呢&…

链接脚本的编写( 起始地址、text、data、__bss_start、__bss_end、dis反汇编验证)

目录链接脚本的简介以及简单编写编写本试验的链接脚本链接脚本的简介以及简单编写 链接脚本描述了要链接的文件&#xff0c;以及链接顺序、链接首地址。 在博文ARM&#xff08;IMX6U&#xff09;裸机C语言版本LED驱动实验中&#xff0c;我们在编译过程中使用Makefile 来链接代…

iOS.UITableView.SectionIndex

1. 为tableview中section建立索引来加速tableview的滚动。 http://nshipster.com/uilocalizedindexedcollation/ 2. 获取汉字的首字母转载于:https://www.cnblogs.com/cwgk/p/3417850.html

java 无法加载资源,JavaScript:无法加载资源:服务器响应状态为404(未找到)

我处理 JavaScript 应用程序&#xff0c;该应用程序在 https://localhost:63342/WalletClient/index.html_ijtk4ock08pqsve8hb7b2b34ou3h5 的localhost地址中打开 . 看起来像这样&#xff0c;单击余额按钮时&#xff0c;它应执行以下 Ajax GET 请求并尝试打开新页面 balance.ht…

ARM(IMX6U)裸机模仿STM32驱动开发实验(定义外设结构体)

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机模仿STM32驱动开发格式 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-15 12:11:56 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/108019447 目录0.外设结构体抽象思路1.模…

postgresql数据库去重方法

数据库去重有很多方法&#xff0c;下面列出目前理解与使用的方法 第一种 通过group by分组&#xff0c;然后将分组后的数据写入临时表然后再写入另外的表,对于没有出现再group by后面的field可以用函数max,min提取&#xff0c;效率较高--适合情况&#xff1a;这种情况适合重复率…

关于博主

一所二本院校辍学生。屌丝一枚&#xff0c;曾经搬过砖&#xff0c;怕死于砖头之下遂改学网络。误入歧途&#xff0c; 学***半年&#xff0c;网管做到如今。去网吧报老衲名字保证给你打折。转载于:https://blog.51cto.com/anqyunwei/1323497

php自动报价,使用PHP转换所有类型的智能报价

小编典典您需要这样的内容(假设输入UTF-8&#xff0c;而忽略CJK(中文&#xff0c;日文&#xff0c;韩文))&#xff1a;$chr_map array(// Windows codepage 1252"\xC2\x82" > "", // U0082⇒U201A single low-9 quotation mark"\xC2\x84" &g…

ARM(IMX6U)裸机官方SDK包使用

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机C语言LED驱动实验–驱动编写,编译 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-11 11:20:17 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/107930284 目录1、I.MX6ULL 官…

h5是什么 www.php.cn,html meta标签的作用是什么?

什么是htmlmeta标签&#xff1a;htmlmeta标签的定义和用法&#xff1a;元素可提供有关页面的元信息(meta-information)&#xff0c;比如针对搜索引擎和更新频度的描述和关键词。标签位于文档的头部&#xff0c;不包含任何内容。标签的属性定义了与文档相关联的名称/值对。htmlm…

apt-get

apt-get是一条linux命令&#xff0c;适用于deb包管理式的操作系统&#xff0c;主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。 apt-get update 在修改/etc/apt/sources.list或/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保…

Leaflet中添加的不同图层样式图标

如上图&#xff0c;具体问题请查看对应html页引用的basemaps的css样式。 如下图是本项目引用的css样式&#xff1a; .basemap img { width: 48px; border: 2px solid #FFF; margin: 0 2px; /*border-radius: 40px;*/ box-shadow: 0 1px 5px rgba(0,0,0,0.65)} 当css样式中的bor…

ARM(IMX6U)BSP工程文件管理(分文件编程)

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;BSP工程管理实验 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-15 23:41:37 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/108028093 目录1、工程管理简介1.1、创建bsp、imx6…

ubuntu16.04 安装 ipython

sudo apt-get install ipython3转载于:https://www.cnblogs.com/kanneiren/p/9970127.html

php图片视频,PHP中使用php5-ffmpeg撷取视频图片实例

前几天在玩 FFmpeg 的时后&#xff0c;突然发现 Ubuntu 上多了 php5-ffmpeg 这个扩充套件&#xff0c;就想来玩玩看&#xff0c;看好不好用&#xff0c;有两个结论&#xff1a;读取影片取决于 FFmpeg 的支援性&#xff0c;如果想要什么格式都支援的话&#xff0c;建议自己重新编…

static 与 extern 关键字描述说明

使用static 定义的变量和函数只能用于本模块即为本文件 使用extern 定义的变量和函数可以用于其他模块的引用转载于:https://www.cnblogs.com/heidsoft/p/3420574.html

ARM(IMX6U)裸机C语言蜂鸣器驱动实验(BSP+SDK)

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机C语言蜂鸣器驱动实验–驱动编写,编译 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-16 14:47:23 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/108032168 目录1、有源蜂鸣…

《深入浅出nodejs》读书笔记(3)

挖坑&#xff0c;待填 转载于:https://www.cnblogs.com/yangzhou33/p/9972378.html

java金字塔的流程图,R中的金字塔图

Plotrix可能更容易&#xff0c;但可以反汇编ggplot图表&#xff0c;并将它们排列为金字塔图 . 使用 eipi10的数据(谢谢)&#xff0c;并调整drawing-pyramid-plot-using-r-and-ggplot2中的代码&#xff0c;我为"males"&#xff0c;"females"和"country…

常用AT指令集 (转)

常 用 AT 命 令 手 册1、常用操作 1.1 AT 命令解释&#xff1a;检测 Module 与串口是否连通&#xff0c;能否接收 AT 命令&#xff1b; 命令格式&#xff1a;AT<CR> 命令返回&#xff1a;OK (与串口通信正常)&#xff08;无返回&#xff0c;与串口通信未连通&#xff09;…