python 内置模块详解


Posted in Python onJanuary 01, 2019

一.random模块  随机      

random()    随机小数           
uninform(a,b) 随机小数
randint(a,b)  随机整数
choice() 随机选择一个
sample() 随机选择多个
shuffle() 打乱

import random
 from random import randint
 
 print(randint(10, 20))
 # print(random.randint(10, 20))/
 print(random.random())
 print(random.uniform(10, 20)) # 10-20的随机小数
 
 lst = ['宝宝', '宝浪', '宝强', '包拯']
 random.shuffle(lst) # 随机打乱顺序
 print(lst) 
 
 # 从列表中随机选择一个
 print(random.choice(["林志玲", "刘一菲", "王昭君", "艾米", "宝宝"]))
 print(random.sample(["林志玲", "刘一菲", "王昭君", "艾米", "宝宝"],3)) # 可以给随机选取几个

二.Counter 计数

from collections import Counter
 
 print(Counter('宝宝今年特别喜欢王宝强')) # 计数
 
 lst = ['jay', 'jay', 'jay', '宝宝', '宝宝', '胡辣汤', '上官婉儿']
 c = Counter(lst)
 print(c.get('宝宝'))

三.字典

1.默认值字典

from collections import defaultdict
 
 dd = defaultdict(lambda: '胡辣汤') # callable 可调用的, 字典是空的
 
 print(dd['张无忌']) # 从字典向外拿数据. 字典是空的. key:callable()
 print(dd['宝宝']) # 这里的[] 和get() 不是一回事儿
 print(dd)

2.有序字典

from collections import OrderedDict
 
 dic = OrderedDict() # 有序字典
 dic['a'] = '哈哈'
 dic['b'] = '呵呵'
 print(dic)
 print(dic.get('a'))
 print(dic.values())
 print(dic['a'])

四.栈和队列

1.栈

特点:先进后出

class StackFullException(Exception):
   pass
 
 class StackEmptyException(Exception):
   pass
 class Stack:
 
   def __init__(self,size):
     self.size = size 给定存放数据的长度
     self.lst = [] # 存放数据的列表
     self.top = 0 # 栈顶指针
 
   # 入栈
   def push(self, el):
     if self.top >= self.size:
       raise StackFullException('your stack is full!!')
     self.lst.insert(self.top, el) # 放元素
     self.top += 1 # 栈顶指针向上移动一下 
 
   # 出栈
 
   def pop(self):
     if self.top == 0:
       raise StackEmptyException('your stack is empty!!!')
     self.top -= 1
     el = self.lst[self.top]
     return el
 
 s = Stack(6)
 s.push('宝宝')
 s.push('我还')
 s.push('记得')
 
 print(s.pop())
 print(s.pop())
 print(s.pop())

2.单项队列

特点:先进先出

import queue
 q = queue.Queue()
 q.put('李嘉诚1')
 q.put('李嘉诚2')
 q.put('李嘉诚3')
 q.put('李嘉诚4')
 q.put('李嘉诚5')
 
 print(q.get())
 print(q.get())
 print(q.get())
 print(q.get())
 print(q.get())

3.双向队列

特点:和单项一样

from collections import deque
 
 d =deque() # 创建双向队列
 d.append('宝宝') # 在右侧添加
 d.append('no')
 d.append('way')
 d.append('哈哈')
 d.appendleft('娃哈哈') # 在左边添加
 d.appendleft('爽歪歪')
 d.appendleft('优酸乳')
 
 print(d.pop()) # 从右边拿数据
 print(d.pop()) # 从右边拿数据
 print(d.pop()) # 从右边拿数据
 print(d.pop()) # 从右边拿数据
 print(d.popleft()) # 从左边拿数据
 print(d.popleft()) # 从左边拿数据
 print(d.popleft()) # 从左边拿数据

五.time模块

 # 时间戳: 从1970-01-01 00:00:00 开始计算. 未来存储的时候用时间戳
 print(time.time()) 

 # 格式化时间
 print(time.strftime('%Y-%m-%d %H:%M:%S'))  # 用来显示的

 # 结构化时间(python的时间)
 t = time.localtime()
 print(t.tm_year)
 print(t.tm_mon)
 print(t.tm_mday)

 # 数据库里存储一个数字. 把它还原成我们的格式化时间
 a = 847772281.0
 # 先把这个时间戳转换成python中的结构化时间
 t = time.localtime(a)  # 结构化时间括号里填的是秒 time.localtime(秒) # 本地化的东八区的时间
 # t = time.gmtime(a)  # 格林尼治时间
 
 s = time.strftime('%Y-%m-%d %H:%M:%S', t)  # time.strftime(格式化格式, 传入结构化转化完的时间 t)
 print(s)

# 让用户输入一个时间. 然后把时间转化成时间戳
strt = input('请输入一个时间:')
# 把字符串转化成结构化时间
t = time.strptime(strt, '%Y-%m-%d %H:%M:%S')
# 转化成时间戳
print(time.mktime(t))  # 847772281.0  # 本地化的东八区的时间

六.functools

1.wraps

from functools import wraps # 可以改变一个函数的名字, 注释....


def wrapper(fn):
  @wraps(fn) # 把inner的名字改变成原来的func
  def inner(*args, **kwargs):
    print('前')
    ret = fn(*args,**kwargs)
    print('后')
    return ret
  return inner

@wrapper # func = wrapper(func)
def func():
  print('哈哈哈')

print(func.__name__) # func

2.reduce

def func(a, b):
   return a + b # 0 + 1
 
 # 会把我们每一个数据交给func去执行, 把默认值作为第一个参数传递给函数
 
 ret = reduce(func, [1, 4, 7, 8, 6, 9],0)
 print(ret)
 print(reduce(lambda x, y: x+y, [i for i in range(101)]))

3.partial

from functools import partial
 
 def chi(zhushi, fushi):
   print(zhushi, fushi)
 
 chi2 = partial(chi, fushi = "辣鸡爪")
 chi2('大米饭')
 chi2('小米饭')
 chi2('黑米饭')

七.命名元组 namedtuple

p = namedtuple('Point', ["x", "y"])
 
 p1 = p(10, 20)
 print(p1)
 print(p1.x)
 print(p1.y)

八.OS模块 系统操作

1.os

# 必须要记住. 很常用
os.makedirs('baby/安哥拉/特斯拉') # 可以一次性创建多级目录

os.mkdir('baby/安哥拉/特斯拉/bb') # 上层文件夹必须存在

os.removedirs('baby/安哥拉/特斯拉/bb') # 目录不是空, 不能删除 #可以帮我们删除当前这个目录级中的所有空文件夹

# 可以记住 一般不删数据
os.rmdir('baby/安哥拉/特斯拉') # 指定文件夹删除

os.system('dir')
print(os.popen('dir').read()) # 执行shell脚本或者cmd命令

print(os.getcwd()) # 当前程序运行的文件夹 D:\python_workspace_s18\day 23 内置模块02

os.chdir('baby') 

 # os.path 和路径相关的内容
 print(os.path.abspath('baby')) # 把相对路径改成绝对路径
 print(os.path.split(r'D:\python_workspace\内置模块\baby\1.txt')) # 切割文件和文件路径
 
 print(os.path.dirname(r'D:\python_workspace\内置模块\baby\1.txt')) 
 # 文件路径
 print(os.path.basename(r'D:\python_workspace\内置模块\baby\1.txt')) 
 # 文件
 
 print(os.path.existsr'D:\python_workspace\内置模块\baby\1.txt')) 
 # 判断文件是否存在
 print(os.path.abspath('1.txt'))

2.sys模块

import sys
 
 print(sys.path) # 找到模块的. 必须要记住. 模块的搜索路径
 sys.path.append(r'D:\python_workspace\内置常用模块')
 print(sys.path)

九.自定义模块和包

import   

from xxx import xxxx   

一个表达式 -> 一条语句  -> 语句块  -> 函数 -> 类  -> 模块  -> 包  -> 项目       

包就是我们的文件夹, 包内可以写很多个模块.

查找路径是:sys.path, 随动. 跟着你的启动文件所在的位置变化       

不论使用绝对导入. 还是相对导入. 启动文件一定在最外面

 1.模块

写的一个py文件就可以称作一个模块

2.包

文件夹里装很多模块的就是包

Python 相关文章推荐
python使用cookie库操保存cookie详解
Mar 03 Python
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
python实现合并两个数组的方法
May 16 Python
Django内容增加富文本功能的实例
Oct 17 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
python实现3D地图可视化
Mar 25 Python
python 实现百度网盘非会员上传超过500个文件的方法
Jan 07 Python
python配置grpc环境
Jan 01 #Python
python制作mysql数据迁移脚本
Jan 01 #Python
在python中将字符串转为json对象并取值的方法
Dec 31 #Python
对python中Json与object转化的方法详解
Dec 31 #Python
python使用zip将list转为json的方法
Dec 31 #Python
python 获取utc时间转化为本地时间的方法
Dec 31 #Python
python 实现UTC时间加减的方法
Dec 31 #Python
You might like
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
js Math 对象的方法
2013/09/01 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
linux 下selenium chrome使用详解
2020/04/02 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
本科毕业生的求职信范文
2013/11/20 职场文书
小松树教学反思
2014/02/11 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
开国大典观后感
2015/06/04 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
《灰雀》教学反思
2016/02/19 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL