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 27 Python
python使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 Python
Python打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Python使用urllib2模块实现断点续传下载的方法
Jun 17 Python
python制作小说爬虫实录
Aug 14 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
Python列表元素常见操作简单示例
Oct 25 Python
Python小白不正确的使用类变量实例
May 29 Python
python实现简单的三子棋游戏
Apr 28 Python
Python sklearn分类决策树方法详解
Sep 23 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
memcache命令启动参数中文解释
2014/01/13 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
window.onload使用指南
2015/09/13 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
js中的 || 与 && 运算符详解
2018/05/24 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
python调用fortran模块
2016/04/08 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
Python登录系统界面实现详解
2019/06/25 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
django 读取图片到页面实例
2020/03/27 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
中学生关于梦想的演讲稿
2014/08/22 职场文书
比较几种Redis集群方案
2021/06/21 Redis
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers