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 相关文章推荐
下载安装setuptool和pip linux安装pip    
Jan 24 Python
跟老齐学Python之从格式化表达式到方法
Sep 28 Python
详解python里的命名规范
Jul 16 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
详解Python正则表达式re模块
Mar 19 Python
python通过实例讲解反射机制
Oct 17 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
Jan 21 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
python list的index()和find()的实现
Nov 16 Python
python 实现德洛内三角剖分的操作
Apr 22 Python
python pygame入门教程
Jun 01 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 开发工具
2006/12/06 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
python3实现磁盘空间监控
2018/06/21 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
《小草和大树》教学反思
2014/02/16 职场文书
社区平安建设方案
2014/05/25 职场文书
上学路上观后感
2015/06/16 职场文书
放假通知怎么写
2015/08/18 职场文书
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python