一 . 简单的了解模块

  你写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块.

  buildins  内置模块. print, input.

  random  主要是和随机相关的的内容

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

import random
print(random.randint(10,20)) from random import randint
print(randint(10,20)) import random
print(random.randint(10,20)) # 随机整数
print(random.random()) # python中所有随机数的根 随机小数 0-1
print(random.uniform(10,20)) # 10-20的随机小数
lst = ["宝宝", "宝强", "宝浪", "包拯"]
random.shuffle(lst) # 随机打乱顺序
print(lst)
# 从列表中随机选择一个
print(random.choice(["林志玲", "刘一菲", "王昭君", "艾米", "宝宝"]))
print(random.sample(["林志玲", "刘一菲", "王昭君", "艾米", "宝宝"], 3))

二 .  Collections   

  1. Counter 计数器

# from collections import Counter

# print(Counter("我我我你你他")) # 计数  Counter({'我': 3, '你': 2, '他': 1})
# lst = ["jay",'jay',"jay","宝宝","宝宝", "胡辣汤", "上官婉儿", "上官婉儿"]
# print(Counter(lst)) # Counter({'jay': 3, '宝宝': 2, '上官婉儿': 2, '胡辣汤': 1})

  2. defaultdict 默认值字典

from collections import defaultdict
# 默认值字典
dd = defaultdict(lambda: '武林盟主') # callable 可调用的, 字典是空的
dic = dd['张无忌']
print(dd) # defaultdict(<function <lambda> at 0x0000007BEA451EA0>, {'张无忌': '武林盟主'})

  3. OrderedDict 有序字典

from collections import OrderedDict
# 有序字典
dic = OrderedDict()
dic["笑傲江湖"] = "令狐冲"
dic['天龙八部'] = "乔峰"
print(dic) # OrderedDict([('笑傲江湖', '令狐冲'), ('天龙八部', '乔峰')])
print(dic.get("笑傲江湖")) # 令狐冲
print(dic.values()) # odict_values(['令狐冲', '乔峰'])
print(dic['天龙八部']) # 乔峰

  数据结构(队列, 栈(重点))

  栈:先进后出
    Stack

# 特点: 先进后出
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(4)
s.push("笑")
s.push("傲")
s.push("江")
s.push("湖")
print(s.pop()) # 湖
print(s.pop()) # 江
print(s.pop()) # 傲
print(s.pop()) # 笑

  

  队列: 先进先出
    Queue

import queue
q = queue.Queue()
q.put("射")
q.put("雕")
q.put("英雄")
q.put("传") print(q.get()) # 射
print(q.get()) # 雕
print(q.get()) # 英雄
print(q.get()) # 传

  双向队列

from collections import deque

d = deque() # 创建双向队列
d.append("书剑") # 在右侧添加
d.append("恩仇")
d.append("录")
d.appendleft("娃哈哈") # 在左边添加
d.appendleft("爽歪歪")
d.appendleft("优酸乳") print(d.pop()) # 从右边拿数据 录
print(d.pop()) # 从右边拿数据 恩仇
print(d.pop()) # 从右边拿数据 书剑
print(d.popleft()) # 从左边拿数据 优酸乳
print(d.popleft()) # 从左边拿数据 爽歪歪
print(d.popleft()) # 从左边拿数据 娃哈哈

  

3. Time模块

  时间有三种:
  结构化时间 gmtime() localtime()
  时间戳 time.time() time.mktime()
  格式化时间 time.strftime() time.strptime()

import time

# 时间戳: 从1970-01-01 00:00:00开始计算. 未来存储的时候用是时间戳
print(time.time()) # 显示的是从1970-01-01 00:00:00开始计算到现在是多少秒 # 格式化时间
print(time.strftime("%Y-%m-%d %H:%M:%S")) # 用来显示的 # 2018-12-26 12:38:56 # 结构化时间(python的时间)
print(time.localtime())
t = time.localtime()
print(t.tm_year) #
print(t.tm_mon) #
print(t.tm_mday) #

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

import time
# 数据库中存储一个数字,把它还原成我们的格式化时间
a = 1541952464
# 先把这个时间戳转化成python中的结构化时间
t = time.localtime(a) # 东八区时间
# 把这个结构化时间转化成格式化时间
s = time.strftime('%Y-%m-%d %H:%M:%S', t)
print(s) # 2018-11-12 00:07:44

  

# 数据库里存储一个数字. 把它还原成我们的格式化时间
a = 0 # 可以在范围内随便设
# 先把这个时间戳转化成python中的结构化时间
t = time.gmtime(a) # 格林尼治时间
# 把一个结构化时间转化成格式化时间
s = time.strftime("%Y-%m-%d %H:%M:%S", t)
print(s) # 1970-01-01 00:00:00

  

  字符串 -> 数字
  struct_time = time.strptime(字符串, "格式")
  num = time.mktime(struct_time)

  无论是由时间戳转化成格式化时间 还是由 格式化时间转化成时间戳都需要经过结构化时间

# 用户输入一个时间,然后把时间转化成时间戳
strf = input('请输入一个时间:') # 2018-12-12 21:12:43
# 把字符串转化成结构化时间
t = time.strptime(strf,'%Y-%m-%d %H:%M:%S')
print(time.mktime(t)) # 1544620363.0

 

四 . functools

  wraps 给装饰器中的inner改名字

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 如果没有@wraps 打印的就是inner

  

  reduce 归纳.

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

 

  偏函数 把函数的参数固定.

from functools import partial

def eat(zhushi, fushi):
print(zhushi, fushi)
# 固定函数中某些参数的值
eat2 = partial(eat, fushi="辣鸡爪")
eat2("大米饭") # 大米饭 辣鸡爪
eat2("小米饭") # 小米饭 辣鸡爪
eat2("黑米饭") # 黑米饭 辣鸡爪

  

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

  1. day05 模块以及内置常用模块用法

    内置常用模块详解: 1 time 2 datetime 3 random   4 os 5 sys 6 shutil 7 shelve 8 xml 9 configparser 10 hashlib ...

  2. python之路——内置函数和匿名函数

    阅读目录 楔子 内置函数 匿名函数 本章小结 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们 ...

  3. day25 内置常用模块(四): 模块和包

    阅读目录: 模块 import from xxx import xxx 包 import from xxx import xxx    from xxx  import *    __init__.p ...

  4. 百万年薪python之路 -- 内置函数二 -- 最常用的内置函数

    1.内置函数 1.1 匿名函数 匿名函数,顾名思义就是没有名字的函数(其实是有名字的,就叫lambda),那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话 ...

  5. python之路 内置函数,装饰器

    一.内置函数 #绝对值 abs() #所有值都为真才为真 all() #只要有一个值为真就为真 any() #10进制转成二进制 bin() #10进制转成八进制 oct() #10进制转成十六进制 ...

  6. Python之路----------内置函数

    1.abs(x)绝对值 #coding=utf-8 a = 1 b = -2 print(abs(a)) print(abs(b)) 2.all(iterable)可迭代对象里面所有内容为真返回真,空 ...

  7. python之路--内置函数, 匿名函数

    一 . 内置函数 什么是内置函数? 就是python给你提供的. 拿来直接⽤的函数, 比如print., input等等. 字符串类型代码的执⾏ eval() 执⾏字符串类型的代码. 并返回最终结果( ...

  8. Python之路----内置函数补充与匿名函数

    内置函数补充:reversed()保留原列表,返回一个反向的迭代器 l = [1,2,3,4,5] l.reverse() print(l) l = [1,2,3,4,5] l2 = reversed ...

  9. NO.4:自学python之路------内置方法、装饰器、迭代器

    引言 是时候开始新的Python学习了,最近要考英语,可能不会周更,但是尽量吧. 正文 内置方法 Python提供给了使用者很多内置方法,可以便于编程使用.这里就来挑选其中大部分的内置方法进行解释其用 ...

随机推荐

  1. 解决y7000笔记本ubuntu18.04下 休眠挂起后唤醒花屏

    定位问题,切换到核显后发现一点问题也没有,基本确定是显卡驱动的问题 但是由于配置环境比较复杂,不想重新装N卡驱动,所以另寻方法 sudo gedit /etc/default/grub 修改前 # I ...

  2. 【转】如何使用分区助手完美迁移系统到SSD固态硬盘?

    自从SSD固态硬盘出世以来,一直都被持续关注着,SSD的性能优势让无数用户起了将操作系统迁移到SSD的心思,直接后果就是让无数机械硬盘为止黯然退场,很多软件都可以做到系统迁移,然而,被完美迁移的系统却 ...

  3. 根据考试成绩输出对应的礼物,90分以上爸爸给买电脑,80分以上爸爸给买手机, 60分以上爸爸请吃一顿大餐,60分以下爸爸给买学习资料。 要求:该题使用多重if完成

    package com.Summer_0417.cn; import java.util.Scanner; /** * @author Summer * 根据考试成绩输出对应的礼物, * 90分以上爸 ...

  4. <网络编程>基本TCP套接字编程

    tcp提供了可靠传输,当tcp向另一端发送数据的时候,要求对端返回一个确认.如果没有接收到确认,tcp就重传数据并且等待更长时间,数次重传失败后,tcp才放弃. 建立一个tcp连接会发生如下事情: 服 ...

  5. AI caffe

    caffe,是一个深度学习框架. Blob 存储数据. 批量图像数据(n, k, h, w):图像数量,图像通道,图像高度,图像宽度. data:值 diff:梯度 Layer data_layers ...

  6. 史上最全面的Docker容器引擎使用教程

    目录 1.Docker安装 1.1 检查 1.2 安装 1.3 镜像加速 1.4 卸载Docker 2.实战Nginx 3.Docker命令小结 4.DockerFile创建镜像 4.1 Docker ...

  7. Python 学习 第十六篇:networkx

    networkx是Python的一个包,用于构建和操作复杂的图结构,提供分析图的算法.图是由顶点.边和可选的属性构成的数据结构,顶点表示数据,边是由两个顶点唯一确定的,表示两个顶点之间的关系.顶点和边 ...

  8. 【C#复习总结】dynamic

    介绍 C# 4 引入了一个新类型 dynamic. 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查. 大多数情况下,该对象就像具有类型 object 一样. 在编译时,将假定 ...

  9. 4月27号开学! 第6期《jmeter实战接口自动化+性能》课程,零基础也能学

    2019年 第6期<jmeter实战接口自动化+性能>课程,4月27号开学! 主讲老师:飞天小子 上课方式:QQ群视频在线教学 本期上课时间:4月27号-6月9号,每周六.周日晚上20:0 ...

  10. IntelliJ IDE 常用配置

    一. Intellij IDE 安装与破解 详细安装步骤 二.IntelliJ Maven 配置 查看: 使用IntelliJ IDEA 配置Maven(入门) 三.IntelliJ Tomcat 配 ...