刘沙河 刘沙河
首页
  • Go语言基础

    • 数据类型
    • 反射
    • Go指针
  • Go语言进阶

    • go泛型
    • go条件编译
    • cgo教程
    • Go协程调度原理及GPM模型
    • Go内存管理
    • Go垃圾回收机制
    • Go语言内存对齐
  • Go语言实现原理

    • channel 实现原理
    • slice 实现原理
    • map 实现原理
    • sync.Mutex 实现原理
    • 乐观锁CAS 实现原理
    • singlefight 实现原理
  • gin框架

    • gin中间件原理
    • gin路由原理
  • gorm

    • GORM介绍和使用
    • GORM_CURD操作指南
  • go测试

    • benchmark基准测试
    • pprof 性能分析
  • python进阶

    • Numpy&Pandas
    • celery分布式任务队列
  • Django

    • Django 常见命令
    • middleware中间件
    • Django缓存系统
    • Django信号系统
    • Django REST Framework
  • Flask

    • Flask基础知识总结
    • Flask-SQLAlchemy
  • 爬虫

    • aiohttp
    • scrapy框架
  • Mysql

    • Mysql存储引擎和索引
    • MySQL主从复制
    • Mysql读写分离
    • 数据库分库分表
    • Mysql锁
    • Mysql事务和MVCC原理
    • 分库分表带来的读扩散问题
  • Redis

    • redis基础和数据类型
    • redis主从架构
    • redis哨兵架构
    • redis集群模式
    • 如何保证缓存和数据库双写一致
    • redis底层数据结构
    • redis分布式锁
  • Elasticsearch

    • es基本概念
    • es基础语法
    • es倒排索引
  • etcd

    • Go操作etcd
    • Raft原理
    • etcd分布式锁
  • kafka

    • 消息队列MQ总结
    • kafka 概述及原理
    • kafka 消费问题记录
    • 零拷贝技术
    • kafka分区规范
  • RabbitMQ

    • rabbitMQ基础
    • Go操作rabbitmq
  • RocketMQ

    • 可靠消息队列 rocketMQ
  • Http&Https

    • http&https
    • TCP和UDP
    • Ping 原理
  • RPC

    • RPC初识
    • grpc初识和实现
  • gRPC

    • grpc 初识
    • grpc 上下文 metadata
    • grpc 健康检查
    • grpc keepalive
    • grpc 命名解析
    • grpc 中间件&拦截器
    • grpc 负载均衡
    • grpc 身份认证
    • grpc 超时重试
    • grpc 链路追踪
    • grpc-gw将gRPC转RESTfu api
    • grpc-gw自定义选项
  • protobuf

    • protobuf 进阶
    • protobuf 编码原理
  • Docker

    • Docker基础
    • Docker常用命令
    • Dockerfile
    • Docker-Compose
    • Docker多阶段构建
    • Docker Config 教程
    • Docker Swarm 教程
    • Docker Stack 教程
    • Docker Buildx 教程
  • k8s

    • k8s 基础概念
    • k8s 集群架构
    • k8s 工作负载
    • Pod 网络
    • Service 网络
    • 外部接入网络
    • 一张图搞懂k8s各种pod
    • k8s 存储抽象
    • mac快速启动k8s
    • 自制申威架构k8s-reloader
  • go-kit

    • go-kit初识
    • go-kit启动http服务
    • go-kit集成gin启动服务
    • go-kit集成grpc和protobuf
    • go-kit中间件
    • go-kit服务注册发现与负载均衡
    • go-kit限流和熔断
    • go-kit链路追踪
    • go-kit集成Prometheus
  • 设计模式

    • 初识设计模式
    • 创建型模式
    • 结构型模式
    • 行为模式
  • 数据结构

    • 时间轮
    • 堆、双向链表、环形队列
    • 队列:优先队列
    • 队列:延迟队列
  • 算法

    • 递归算法
    • 枚举算法
    • 动态规划
    • 回溯算法
    • 分治算法
    • 贪心算法
    • LRU和LFU
    • 一致性哈希

花开半夏,半夏花开
首页
  • Go语言基础

    • 数据类型
    • 反射
    • Go指针
  • Go语言进阶

    • go泛型
    • go条件编译
    • cgo教程
    • Go协程调度原理及GPM模型
    • Go内存管理
    • Go垃圾回收机制
    • Go语言内存对齐
  • Go语言实现原理

    • channel 实现原理
    • slice 实现原理
    • map 实现原理
    • sync.Mutex 实现原理
    • 乐观锁CAS 实现原理
    • singlefight 实现原理
  • gin框架

    • gin中间件原理
    • gin路由原理
  • gorm

    • GORM介绍和使用
    • GORM_CURD操作指南
  • go测试

    • benchmark基准测试
    • pprof 性能分析
  • python进阶

    • Numpy&Pandas
    • celery分布式任务队列
  • Django

    • Django 常见命令
    • middleware中间件
    • Django缓存系统
    • Django信号系统
    • Django REST Framework
  • Flask

    • Flask基础知识总结
    • Flask-SQLAlchemy
  • 爬虫

    • aiohttp
    • scrapy框架
  • Mysql

    • Mysql存储引擎和索引
    • MySQL主从复制
    • Mysql读写分离
    • 数据库分库分表
    • Mysql锁
    • Mysql事务和MVCC原理
    • 分库分表带来的读扩散问题
  • Redis

    • redis基础和数据类型
    • redis主从架构
    • redis哨兵架构
    • redis集群模式
    • 如何保证缓存和数据库双写一致
    • redis底层数据结构
    • redis分布式锁
  • Elasticsearch

    • es基本概念
    • es基础语法
    • es倒排索引
  • etcd

    • Go操作etcd
    • Raft原理
    • etcd分布式锁
  • kafka

    • 消息队列MQ总结
    • kafka 概述及原理
    • kafka 消费问题记录
    • 零拷贝技术
    • kafka分区规范
  • RabbitMQ

    • rabbitMQ基础
    • Go操作rabbitmq
  • RocketMQ

    • 可靠消息队列 rocketMQ
  • Http&Https

    • http&https
    • TCP和UDP
    • Ping 原理
  • RPC

    • RPC初识
    • grpc初识和实现
  • gRPC

    • grpc 初识
    • grpc 上下文 metadata
    • grpc 健康检查
    • grpc keepalive
    • grpc 命名解析
    • grpc 中间件&拦截器
    • grpc 负载均衡
    • grpc 身份认证
    • grpc 超时重试
    • grpc 链路追踪
    • grpc-gw将gRPC转RESTfu api
    • grpc-gw自定义选项
  • protobuf

    • protobuf 进阶
    • protobuf 编码原理
  • Docker

    • Docker基础
    • Docker常用命令
    • Dockerfile
    • Docker-Compose
    • Docker多阶段构建
    • Docker Config 教程
    • Docker Swarm 教程
    • Docker Stack 教程
    • Docker Buildx 教程
  • k8s

    • k8s 基础概念
    • k8s 集群架构
    • k8s 工作负载
    • Pod 网络
    • Service 网络
    • 外部接入网络
    • 一张图搞懂k8s各种pod
    • k8s 存储抽象
    • mac快速启动k8s
    • 自制申威架构k8s-reloader
  • go-kit

    • go-kit初识
    • go-kit启动http服务
    • go-kit集成gin启动服务
    • go-kit集成grpc和protobuf
    • go-kit中间件
    • go-kit服务注册发现与负载均衡
    • go-kit限流和熔断
    • go-kit链路追踪
    • go-kit集成Prometheus
  • 设计模式

    • 初识设计模式
    • 创建型模式
    • 结构型模式
    • 行为模式
  • 数据结构

    • 时间轮
    • 堆、双向链表、环形队列
    • 队列:优先队列
    • 队列:延迟队列
  • 算法

    • 递归算法
    • 枚举算法
    • 动态规划
    • 回溯算法
    • 分治算法
    • 贪心算法
    • LRU和LFU
    • 一致性哈希
  • Python基础

    • 运算符-while循环
    • 数据类型
    • 知识补充&数据类型列表,元祖
    • 字典
    • 数据类型-集合
    • 深浅拷贝&文件操作
    • 文件操作Ⅱ
    • 函数Ⅰ(基础)
    • 函数Ⅱ(参数&作用域)
    • 函数Ⅲ(内置函数&lambda表达式)
    • 函数Ⅳ(闭包&内置模块)
    • 装饰器&推导式
    • 装饰器(二)&模块(一)
    • 模块(二)
    • 模块(总)
      • 模块基本知识
        • 1.模块分类
        • 2.内置模块(类库)
        • 2.1 os模块
        • 2.2 sys模块
        • 2.3 json / pickle模块
        • 2.4 time/datetime模块
        • 2.4.1 time模块
        • 2.4.2 datetime模块
        • 2.5 shutil模块
        • 2.6 logging模块(欠)
        • 3.模块调用
        • 调用小结:
      • 异常处理:
        • 函数高级 5*
        • 模块分类和定义 4*
        • 导入模块
    • 迭代器&生成器
    • 面向对象(一)
    • 面向对象(二)类成员&成员修饰符
    • 面向对象(三)特殊方法
    • 面向对象(四) 约束&反射
    • 正则表达式
    • re模块
  • Python进阶

  • Python并发编程

  • Django

  • Flask

  • 爬虫

  • Python
  • Python基础
bigox
2022-06-16
目录

模块(总)

  • 对于range py2,与py3的区别:

    • py2:range() 在内存中立即把所有的值都创建,xrange() 不会再内存中立即创建,而是在循环时边环边创建.
    • py3:range() 不会再内存中立即创建,而是在循环时边环边创建.
  • 对于包的定义py2与py3的区别:

    • 包内py2内文件夹中必须有_ _ init _ _ .py
    • py3中不需要
    • 建议所有的包内全部加上_ _ init _ _ .py文件
  • sys.exit() 退出程序

  • 函数书写时一定要写注释

  • 复杂代码写注释

  • 构造字典和函数的对应关系,避免重复冗余的if ellse

  • a=1
    b=2
    a,b=b,a#ab值交换
    
    1
    2
    3
  • 遇到问题解答时一定要问,或者给出多个解答

  • random

    print( random.randint(1,10) )        # 产生 1 到 10 的一个整数型随机数  
    print( random.random() )             # 产生 0 到 1 之间的随机浮点数
    print( random.choice('tomorrow') )   # 从序列中随机选取一个元素
    print( random.randrange(1,100,2) )   # 生成从1到100的间隔为2的随机整数
    
    1
    2
    3
    4

# 模块基本知识

  • 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')。
  • if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

# 1.模块分类

  • 内置模块 : py内部提供的功能,直接使用

    import sys
    sys.argv()
    
    1
    2
  • 第三方模块 : 需要从第三方下载/安装使用

    #https://pypi.org/
    'pip.exe路径' pip install 需要安装模块的名称			#执行命令
    
    1
    2
  • 自定义模块:根据需求自我定义模块

    1. 创建文件 file.py
    2. 导入模块 impoort file
    3. 运行模块

# 2.内置模块(类库)

  • 常用内置模块:json/time/ /os/sys
  • 模块(类库)可以是py文件,也可以是文件夹
  • 定义模块时可以把一个py文件或一个文件夹(包)当做一个模块,方便调用

# 2.1 os模块

  • os.mkedirs() 创建目录和子目录

  • os.rename(a,b) 重命名

  • os.path.jion(a,b) 连接路径

  • os.path.dirname() 文件上一层目录

  • os.path.abspath() 绝对路径

  • os.path.exists() 路径是否存在

  • os.stat().st_size 判断文件大小

  • os.listdir() 查看路径内存在文件

  • os.walk() 查看路径内所有层级文件

# 2.2 sys模块

  • sys.argv(索引) 取用户输入参数
  • sys.path 默认python取导入模块时,会按照sys.path指定的文件夹去寻找
    • sys.path.append('目录'), 添加自定义模块读取目录

# 2.3 json / pickle模块

json =鸡哥的儿子
鸡哥的儿子是字符串,头衔是:翻译官,擅长翻译列表和字典形式
有两个特殊功能:序列化【dumps】(给别人用)反序列化【loads】(拿来自己用 )
1
2
3
  • json 是一个特殊的字符串(长得像列表/字典/字符串/数字混合)

  • json.dumps() 序列化:将列表/字典/字符串/数字转化为json格式的字符串

  • json.loads() 反序列化:序列化的逆向操作

  • json格式要求:

    • 只能包含int/ str/ list/ dict/ bool 不存在元组/集合
    • 最外层必须是一个列表或字典
    • 在json中如果有字符串,必须是双引号"json中的字符串"
    • 真假小写true/false
  • 字典或者列表中存在中文,序列化的时候或转为UNcode格式,如果想保存中文就需要进行以下操作

    v1=[1,2,3,4,'2','大牛']
    val = json.dumps(v1,ensure_ascii=False)
    print(val)     #[1, 2, 3, 4, "2", "大牛"]
    
    1
    2
    3
  • json:有点:所有语言通用,缺点:只能序列化部分数据类型;

  • pickle;可以序列化多有数据,但是序列化之后只有python识别

# 2.4 time/datetime模块

  • 共有24个时区,每个时区相差一个小时
# 2.4.1 time模块
  • time.time() 时间戳stamp 1970-1-1 00:00到现在的秒数

    • UTC/GMT :世界时间
    • 本地时间
    #小拓展:1970年1月1日 算 UNIX 和 C语言 生日。 由于主流计算机和操作系统都用它,其他仪器,手机等也就用它了。
    #UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。
    
    1
    2
  • time.sleep('秒数') 等待秒数

  • 注意要点:

    15555555555243289...
    55555534232214324...
    #看到这种需要想到是不是戳
    
    1
    2
    3
# 2.4.2 datetime模块
  • 获取datetime格式时间

    • datetime.now() 获取当前本地时间
    • datetime.utcnow() 获取当前utc时间
  • 把datetime格式转换成字符串

    • .strftime()
    from datetime import datetime
    t1 = datetime.utcnow()
    print(t1,type(t1))		#2019-04-18 07:41:58.725352 <class 'datetime.datetime'>
    val = t1.strftime('%Y-%m-%d %H-%M-%S')
    print(val)	#2019-04-18 07:48:35
    
    1
    2
    3
    4
    5
  • 把字符串格式的转化为datetime类型

    • datetime.strptime()

      from datetime import datetime
      val = t1.strptime('2019-04-18','%Y%m%d')
      print(val)	#2019-04-18 00:00:00
      
      1
      2
      3
  • 应用场景:

    • 时间加减
    from datetime import datetime,timezone,timedelta
    t1= datetime.strptime('2017-9-9','%Y-%m-%d')
    t2= t1 +timedelta(days=11)
    print(t2)  #2017-09-20 00:00:00
    
    1
    2
    3
    4
  • 时间戳与datetime的关联

    • 时间戳转datetime

      • datetime.fromtimestamp(t)
      from datetime import datetime,timezone,timedelta
      t1 = time.time()
      val = datetime.fromtimestamp(t1)
      print(val)
      
      1
      2
      3
      4
    • datetime转时间戳

      • .timestamp()
      from datetime import datetime,timezone,timedelta
      t1 = datetime.now()
      val = t1.timestamp()
      print(val)
      
      1
      2
      3
      4

# 2.5 shutil模块

  • shutil.rmtree() 删除目录

  • shutil.move(a,b) 重命名文件或者目录

  • shutil.make_archive("压缩后的文件名称","压缩格式","要压缩的文件绝对路径") 压缩文件

    shutil.make_archive('zzh','zip','D:\code\s21day16\lizhong')
    
    1
  • shuti.unpack_archive("要解压文件名称",路径"要解压到的路径",,格式)路径不存在则创建

    shutil.unpack_archive('zzh.zip',extract_dir=r'D:\code\xxxxxx\xxxx',format='zip')
    
    1

# 2.6 logging模块(欠)

# 3.模块调用

  • 在那个文件里运行代码时,系统会自动把文件所在目录下的文件夹和文件自动加载到内存

  • 导入模块(第一种)

    • import 模块名称
    • 调用: 模块名称.函数()
    • 代码从上到下运行,遇见导入的模块时,立即执行导入的模块
  • 导入模块(第二种)

    • from 模块名称 import 函数名 , 函数名 as 别名 #导入部分函数,as可以在函数名重复时起别名

    • from 模块名称 import * #导入模块全部函数

    • from 模块.模块.模块 import 函数名称

    • 调用: 函数名/别名()

      # 导入模块
      from lizhongwei import func,show
      from lizhongwei import func
      from lizhongwei import show
      from lizhongwei import *
      func()
      
      1
      2
      3
      4
      5
      6

# 调用小结:

  • 模块和要执行的py文件在同一目录,需要模块中很多个功能,推荐使用import 模块
  • 其他推荐from模式导入

# 异常处理:

try:

​	操作

except Exception as e:

​	print('操作异常')
1
2
3
4
5
6
7
#示例
def func(a):
    try:
        return a.strip()
    except Exception as e:
        pass
    return False
v = func('alex')
if not v:
    print('函数执行失败')
else:
    print('结果是',v)
1
2
3
4
5
6
7
8
9
10
11
12

# 总结:

# 函数高级 5*

  • 嵌套
  • 装饰器

# 模块分类和定义 4*

  • 内置模块
    • os
    • sys
    • json/pckle
    • time
    • datetime
    • shutil
  • 第三方
    • requests
    • xlrd
  • 自定义模块
    • 文件
    • 文件夹 + init.py【包】

# 导入模块

  • sys.path
  • 导入
    • import
    • from xx.xxx import xx
#Python#
上次更新: 2023/04/16, 18:35:33
模块(二)
迭代器&生成器

← 模块(二) 迭代器&生成器→

最近更新
01
go与http代理
05-24
02
自制申威架构k8s-reloader
12-06
03
Docker Buildx 教程
12-01
更多文章>
Theme by Vdoing | Copyright © 2020-2024 小刘扎扎 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式