博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python之路--内置常用模块
阅读量:6129 次
发布时间:2019-06-21

本文共 4929 字,大约阅读时间需要 16 分钟。

一 . 简单的了解模块

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

  buildins  内置模块. print, input.

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

    random() 随机小数

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

import randomprint(random.randint(10,20))from random import randintprint(randint(10,20))import randomprint(random.randint(10,20)) # 随机整数print(random.random()) # python中所有随机数的根 随机小数 0-1print(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(
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):    passclass StackEmptyException(Exception):    passclass 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 els = Stack(4)s.push("笑")s.push("傲")s.push("江")s.push("湖")print(s.pop()) # 湖print(s.pop()) # 江print(s.pop()) # 傲print(s.pop()) # 笑

 

  

  队列: 先进先出

    Queue

import queueq = 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 dequed = 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)  # 2018print(t.tm_mon)   # 12print(t.tm_mday)  # 26

 

  时间转化:

  数字 -> 字符串
  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 reducedef func(a, b):    return a + b # 0+1+2+3+4+5+6# 累加# 会把我们每一个数据交给func去执行, 把默认值作为第一个参数传递给函数# 第二个参数就是你这个序列中的第一个数据# 接下来. 把刚才返回的结果作为第一个参数传递个a# 继续吧刚才的结果给第一个参数. 把第三个数据传递给bret = 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)])) # 5050

 

 

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

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

 

  

转载于:https://www.cnblogs.com/attila/p/10181889.html

你可能感兴趣的文章
MVVMArms - MVVM 与 Android Architecture Components 的最佳实战
查看>>
Python学习之路17-Django入门
查看>>
一个简单的加载动画(二)
查看>>
Java进阶篇设计模式之九----- 解释器模式和迭代器模式
查看>>
JS 基础篇(一):创建对象的四种方式
查看>>
JavaScript数据结构之数组栈队列
查看>>
全方位理解JavaScript的Event Loop
查看>>
vue + vuex + directives实现权限按钮的思路
查看>>
言简意赅——总结Java内存区域和常量池
查看>>
对象,包装类
查看>>
[swift 进阶]读书笔记-第六章:函数 C6P1函数的灵活性(The flexibility of function)...
查看>>
自定义控件总结和思考
查看>>
搞定神秘派之java注解
查看>>
《2019 区块链开发者报告》:Qtum 量子链公链设计与开发细
查看>>
使用协议作为可组合扩展
查看>>
沃伦·巴菲特 | 成功的 10/10/10 法则
查看>>
Object类深入研究
查看>>
停发年终奖背后,是程序员“失宠”了?
查看>>
前端项目如何管理
查看>>
SpiderData 2019年2月22日 DApp数据排行榜
查看>>