1、简单了解模块
        模块就是我们把装有特定功能的代码进行归类的解构,从代码编写的单位来看我们的程序
从小到大的顺序:一条代码< 语句块<代码块(函数,类) < 模块
我们目前写的所有py文件都是模块,还有一些内置的模块

  1. 引入模块
  2. # from XXX import XXXX
  3. # from school import student # 导入一个具体的功能
  4. # import school # 导入整个模块
  5.  
  6. import random
  7. print(random.randint(10,20))
  8.  
  9. from random import randint
  10. print(randint(10,20))
   
  2、random模块
   所有关于随机相关的内容都在random模块中
      random主要是和随机相关的内容

  1. random() 随机小数
  2. uninform(a,b) 随机小数
  3. randint(a,b) 随机整数
  4. choice() 随机选择一个
  5. sample()随机选择多个
  6. shuffle() 打乱

  

  1. import random
  2.  
  3. print(random.randint(10,20)) # 随机整数
  4. print(random.randrange(1,10,2)) # 1-10的奇数[1,10)
  5. print(random.random()) # python中所有随机数的根 随机小数 0-1
  6.  
  7. print(random.uniform(10,20)) # 10-20的随机小数
  8. lst = ['苹果','香蕉','荔枝','草莓','竹马']
  9. random.shuffle(lst) # 随机打乱顺序
  10. print(lst)
  11.  
  12. # 从列表中随机选一个
  13. print(random.choice(['苹果','香蕉','荔枝','草莓','竹马']))
  14. print(random.sample(['苹果','香蕉','荔枝','草莓','竹马'],3))
 
3、Collections
 
   collections 模块主要封装了一些关于集合类的相关操作。例:Iterable,Iterator,还有出了基本数据类型以外的数据集合类型, Counter,deque,OrderDict,default以及namedtuple
 
  1、counter()计数器
  1. from collections import Counter
  2. print(Counter('中心广场的中心的公共的场所'))
  3. lst = ['苹果','苹果','香蕉','梨','荔枝','芒果']
  4. print(Counter(lst))
  5. # Counter({'苹果': 2, '香蕉': 1, '梨': 1, '荔枝': 1, '芒果': 1})

  2、defaultdic() 默认值字典,可以给字典设置默认值,当key不存在的时候,直接获取默认值

  1. from collections import defaultdict
  2.  
  3. # 默认值字典
  4. d = defaultdict(lambda:0) # callable 可调用的,字典是空的
  5. print(d) # defaultdict(<function <lambda> at 0x00000183A97B1E18>, {})
  6. print(d['zhangmeng']) # 从字典往外拿数据,字典是空的 key:callable()
  7. print(d['sunqian']) # 这里的[]和get()不是一回事
  8. print(d)
  9. # defaultdict(<function <lambda> at 0x000001AD70AD1E18>, {'zhangmeng': 0, 'sunqian': 0})

  3、OrderDic()有序字典

  1. from collections import OrderedDict
  2. dic = OrderedDict() # 有序字典
  3. dic['a'] = 'A'
  4. dic['b'] = 'B'
  5. print(dic) # OrderedDict([('a', 'A'), ('b', 'B')])
  6. print(dic.get('a'))
  7. print(dic.values()) # odict_values(['A', 'B'])
  8. print(dic["a"])
  4、deque 双向队列
 
          数据结构:
 
                1、栈:FILO 先进后出 --》砌墙的砖头,蒸馒头
                2、队列:FIFO 先进先出 --》排队
  1. # 栈
  2. # 由于python没有给出Stack模块.所以我们自己手动写一个粗略版本
  3. # (注意, 此版本有严重的并发问题)
  4. # 特点:先进后出
  5. class StackFullException(Exception):
  6. pass
  7.  
  8. class StackEmptyException(Exception):
  9. pass
  10.  
  11. class Stack:
  12.  
  13. def __init__(self,size):
  14. self.size = size
  15. self.lst = [] #存放数据的列表
  16. self.top = 0 # 栈顶指针
  17.  
  18. # 入栈
  19. def push(self,el):
  20. if self.top >= self.size:
  21. raise StackFullException("your stack is full!!")
  22. self.lst.insert(self.top,el) #放元素
  23. self.top +=1 # 栈顶指针向上移动一下
  24.  
  25. # 出栈
  26. def pop(self):
  27. if self.top == 0:
  28. raise StackEmptyException("your stack is empty!!")
  29. self.top -= 1
  30. el = self.lst[self.top]
  31. return el
  32.  
  33. s =Stack(6)
  34.  
  35. s.push('sunny')
  36. s.push('ANNA')
  37. s.push('zhouyou')
  38. s.push('hutong')
  39. s.push('wangying')
  40. s.push('zhangmeng')
  41.  
  42. print(s.pop())
  43. print(s.pop())
  44. print(s.pop())
  45. print(s.pop())
  46. print(s.pop())
  47. print(s.pop())
  48. # print(s.pop())

队列:python提供了queue模块

  1. import queue
  2. q = queue.Queue()
  3. q.put('a1')
  4. q.put('a2')
  5. q.put('a3')
  6. q.put('a4')
  7. q.put('a5')
  8. q.put('a6')
  9. q.put('a7')
  10. q.put('a8')
  11.  
  12. print(q.get())
  13. print(q.get())
  14. print(q.get())
  15. print(q.get())
  16. print(q.get())
  17. print(q.get())
  18. print(q.get())
  19. print(q.get())

队列

注:如果队列中没有元素了,再去拿元素,此时程序会阻塞
 
collections 中的deque
  1. from collections import deque
  2.  
  3. d = deque() # 创建双向队列
  4. d.append("认识")
  5. d.append("人生")
  6. d.append("想象")
  7. d.append("心门")
  8. d.appendleft("周末") # 从左边添加
  9. d.appendleft("周四")
  10. d.appendleft("周一")
  11. d.appendleft("周二")
  12.  
  13. print(d.pop()) # 从右边拿数据
  14. print(d.pop()) # 从右边拿数据
  15. print(d.pop()) # 从右边拿数据
  16. print(d.pop()) # 从右边拿数据
  17. print(d.popleft()) # 从左边拿数据
  18. print(d.popleft()) # 从左边拿数据
  19. print(d.popleft()) # 从左边拿数据
  20. print(d.popleft()) # 从左边拿数据

deque

 
4、Time模块
 
    时间有三种:
        结构化时间  gmtime()  localtime()
        时间戳  time.time()  time.mktime()
        格式化时间 time.strftime()time.strptime()
  1. import time
  2. # 时间戳 :从1970-01-01 00:00:00 开始计算,未来存储的时候用的是时间戳
  3. print(time.time())
  4. # print(time.mktime())
  5.  
  6. # 格式化时间
  7. print(time.strftime('%Y-%m-%d %H:%M:%S')) # 一般用来显示
  8. # print(time.strptime('%Y-%m-%d %H:%M:%S'))
  9. # 结构化时间(python时间)
  10. print(time.localtime()) # 本地化的东八区时间
  11. # time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=21, tm_min=5, tm_sec=30, tm_wday=2, tm_yday=360, tm_isdst=0)
  12. print(time.gmtime()) # 格林尼治时间
  13. t = time.localtime()
  14. print(t.tm_year)
  15. print(t.tm_mon)
  16. print(t.tm_min)

时间格式化的标准

  1. %y 两位数的年份表示(00-99
  2. %Y 四位数的年份表示(000-9999
  3. %m 月份(01-12
  4. %d 月内中的一天(0-31
  5. %H 24小时制小时数(0-23
  6. %I 12小时制小时数(01-12
  7. %M 分钟数(00=59
  8. %S 秒(00-59
  9. %a 本地简化星期名称
  10. %A 本地完整星期名称
  11. %b 本地简化的月份名称
  12. %B 本地完整的月份名称
  13. %c 本地相应的日期表示和时间表示
  14. %j 年内的一天(001-366
  15. %p 本地A.M.或P.M.的等价符
  16. %U 一年中的星期数(00-53)星期天为星期的开始
  17. %w 星期(0-6),星期天为星期的开始
  18. %W 一年中的星期数(00-53)星期一为星期的开始
  19. %x 本地相应的日期表示
  20. %X 本地相应的时间表示
  21. %Z 当前时区的名称
  22. %% %号本身

  

  时间转化:
                数字 -->字符串
                struct_time = time.location(数字)
                str = time.strftime("格式",struct_time)

  1. # 数据库中存储一个数字,把他还原成我们的格式化时间
  2. a = 0
  3. # 先把这个时间戳转化成python中的解构化时间
  4. t = time.localtime(a)
  5. # t = time.gmtime(a) # 格林尼治时间
  6. # 把一个结构化时间转化成格式化时间
  7. s = time.strftime('%Y-%m-%d %H:%M:%S',t)
  8. print(s)
      字符串 -->数字
                struct_time = time.strptime(字符串,"格式")
                num = time.mktime(struct_time)
  1. # 让用户输入一个时间,把这个时间转化成时间戳
  2. user_input = input("请输入一个时间:")
  3. # 把用户输入的字符串转化成格式化时间
  4. struct_time = time.strptime(user_input,"%Y-%m-%d %H:%M:%D") # p :parse
  5. # 转化成时间戳
  6. num = time.mktime(struct_time)
  7. print(num)

    计算时间差

  1. # 输入两个时间,计算两个时间之间的时间差
  2. import time
  3. first_time= input('请输入第一个时间:')
  4. second_time = input('请输入第二个时间:')
  5. time1 = time.mktime(time.strptime(first_time,'%Y-%m-%d %H:%M:%S'))
  6. time2 = time.mktime(time.strptime(second_time,'%Y-%m-%d %H:%M:%S'))
  7. time_cha = abs(time1-time2)
  8. struct_time = time.localtime(time_cha)
  9. print(struct_time)
  10. print(f"过去了{struct_time.tm_year - 1970}年{struct_time.tm_mon - 1}月{struct_time.tm_mday-1}日{struct_time.tm_hour}时{struct_time.tm_min}分{struct_time.tm_sec}秒")
 
5、functools
 
      wraps  给装饰器中的inner改名字
  1. from functools import wraps
  2.  
  3. def wrapper(fn):
  4. @wraps(fn) # 把inner的名字改成原来的func
  5. def inner(*args,**kwargs):
  6. print("前")
  7. ret = fn(*args,**kwargs)
  8. print("后")
  9. return ret
  10. return inner
  11.  
  12. @wrapper # func = wrapper(func)
  13. def func():
  14. print('hhhh')
  15.  
  16. print(func.__name__)
  17.  
  18. # 不加@wraps 时结果为 inner
  19. # 加@wraps 时结果为func

reduce 归纳

  1. # map 映射 reduce 归纳
  2. print(list(map(lambda x : x**2, [i for i in range(10)])))
  3.  
  4. from functools import reduce
  5.  
  6. def func(a,b):
  7. return a + b # 累加
  8.  
  9. #会把我们每一个数据交给func去执行,把默认值作为第一个参数传递给函数
  10. # 第二个参数就是你这个序列中的第一个数据
  11. # 接下来,把刚才返回的结果作为第一个参数传递给a
  12. # 继续把刚才的结果给第一个参数,把第三个数据传递给b
  13. ret = reduce(func,[1,4,7,2,8,5,6])
  14. # 工作流程
  15. func(func(func(0,1),4),7)
  16. print(ret)
  17. print(reduce(lambda x,y :x+y,[i for i in range(101)]))

偏函数  把函数的参数固定

  1. from functools import partial
  2.  
  3. def eat(zhushi,fushi):
  4. print(zhushi,fushi)
  5.  
  6. # 固定函数中某些参数的值
  7. eat2 = partial(eat,fushi = '冒菜')
  8. eat2("大米饭")
  9. eat2("小米饭")
  10. eat2("黑米饭")
  11. eat2("紫米饭")
  12. eat2("糯米饭")

python --常用内置模块01的更多相关文章

  1. Python常用内置模块之xml模块

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  2. python常用内置模块

    #持续更新 #在使用内置模块的时候需要导入,例如import abc,则导入abc模块,当然模块也可以自己写,相当于一个类,后面放到类里说,这个因为环境闲置,有些无法执行,只能理解了 #os系统操作 ...

  3. Python 常用内置模块详解

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  4. Python 常用内置模块(加密模块 hashlib,Base64)

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...

  5. python常用模块-01

    1. 简单了解模块 写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块 buildins 内置模块. print, input random 主要是和随机相关的内容 random()    ...

  6. python常用内置模块,执行系统命令的模块

    Subprocess模块 python3.5将使用Subprocess模块跟操作系统进行交互,比如系统命令,他将替换 os.system os.spawn* subprocess.run()方法封装的 ...

  7. python常用内置模块-random模块

    random模块:用于生成随机数 '''关于数据类型序列相关,参照https://www.cnblogs.com/yyds/p/6123692.html''' random() 随机获取0 到1 之间 ...

  8. Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  9. Python web前端 01 HTML常用标签

    Python web前端 01 HTML常用标签 一.HTML创建项目 file ---->new project -----> 输入项目名------>创建文件夹 new dicr ...

随机推荐

  1. java框架之Hibernate(4)-几种检索方式

    准备 模型及映射文件 package com.zze.bean; import java.util.HashSet; import java.util.Set; public class Class ...

  2. 平常比较多实用的SQL

    创建数据库 创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database ...

  3. 玩转spring boot——结合docker

    前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 liunx机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有 ...

  4. hdu5236 Article

    题目链接 概率DP $dp_i$表示连打$i$个字符的期望按键数 那么枚举保存的次数,均分一下连打的个数就好 #include<iostream> #include<cstdio&g ...

  5. Python+OpenCV图像处理(十四)—— 直线检测

    简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...

  6. h5 的localStorage和sessionStorage存到缓存里面的值是string类型

    localStorage永久存在,不手动清除永远存在:sessionStorage 一次会话的浏览器关闭就自动清除 h5 的localStorage和sessionStorage 存到缓存里面的值都是 ...

  7. axios的封装

    function axios(options){ var promise = new Promise((resolve,reject)=>{ var xhr = null; if(window. ...

  8. jQuery事件绑定与常用事件

    jQuery事件与js类似,只是在名称上将前面的on去掉了,例如jQuery的click.mousedown.keypress事件.jQuery绑定事件有2种方法,下面用最基本的例子做演示. ①直接绑 ...

  9. 也说性能测试,顺便说python的多进程+多线程、协程

    最近需要一个web系统进行接口性能测试,这里顺便说一下性能测试的步骤吧,大概如下 一.分析接口频率 根据系统的复杂程度,接口的数量有多有少,应该优先对那些频率高,数据库操作频繁的接口进行性能测试,所以 ...

  10. 【题解】Luogu P4054 [JSOI2009]计数问题

    原题传送门 我自闭了qaq 这道题非常简单,因为1<=c<=100,所以直接对每个c开二维树状数组,操作就跟模板一样 写码5分钟,调码半小时,这道题的输入顺序是x1,x2,y1,y2,我真 ...