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命令行交互提示符的方法
Jan 14 Python
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
python如何将图片转换为字符图片
Aug 19 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
python logging 日志的级别调整方式
Feb 21 Python
python多维数组分位数的求取方式
Mar 03 Python
基于python实现计算且附带进度条代码实例
Mar 31 Python
Python如何定义接口和抽象类
Jul 28 Python
Pycharm 如何一键加引号的方法步骤
Feb 05 Python
Python运算符+与+=的方法实例
Feb 18 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 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中的实现trim函数代码
2007/03/19 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
PHP中的类型约束介绍
2015/05/11 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
JS模拟键盘打字效果的方法
2015/08/05 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
Vue实现简单分页器
2018/12/29 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
Python3读取zip文件信息的方法
2015/05/22 Python
django输出html内容的实例
2018/05/27 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
Python调用飞书发送消息的示例
2020/11/10 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
优秀共产党员先进事迹材料
2014/05/06 职场文书
史上最牛的辞职信
2015/02/28 职场文书