自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(235)
  • 收藏
  • 关注

原创 Python IO 多路复用示例

IO 多路复用示例1、简单 `echo server`2、优化 `echo server`3、群聊 `server`1、简单 echo server# echo serverimport socketimport selectorsselec = selectors.DefaultSelector() # 1、拿到selectorprint(selec)# 3、准备类文件对象,官方建议采用非阻塞IOserver = socket.socket()server.bind(('127.0

2022-05-01 14:16:08 350

原创 Python Socket 编程

Python Socket 编程1、字典遍历问题1.1 线程遍历字典1.2 加锁2、`TCP socket`2.1 概念2.2 `TCP-SERVER - 1`2.3 `TCP-SERVER - 2`2.4 `TCP-SERVER - 3`2.5 `TCP-SERVER - 4`2.6 `TCP-CLIENT`3、`UDP`3.1 `UDP-SERVER`3.2 `UDP-CLIENT`4、`SocketServer`4.1 `socketserver` 介绍4.2 `socketserver echo s

2022-04-29 10:41:34 815

原创 Python concurrent 包

Python concurrent 包1、`concurrent.futures`2、`ThreadPoolExecutor`3、`ProcessPoolExecutor`4、`ProcessPoolExecutor` 支持上下文管理1、concurrent.futures异步并行任务编程模块,提供一个高级的异步可执行的便利接口。提供了两个池执行器:ThreadPoolExecutor 异步调用的线程池的ExecutorProcessPoolExecutor 异步调用的进程池的Execut

2022-04-22 07:28:22 1146

原创 Python 多进程

Python 多进程1、概念2、`multiprocessing.Process`类2.1 进程间同步2.2 示例3、`multiprocessing.Pool`类3.1 同步调用3.2 异步调用4、多线程和多进程的选择1、概念由于Python的GIL,多线程未必是CPU密集型程序的好的选择。多进程可以完全独立的进程环境中运行程序,可以较充分地利用多处理器。但是进程本身的隔离带来的数据不共享也是一个问题,而且线程比进程轻量级。2、multiprocessing.Process类2.1 进程间同

2022-04-22 06:30:02 377

原创 Python GIL 全局解释器锁

Python GIL 全局解释器锁1、`GIL`2、`CPU`密集型1、GILCPython在解释器进程级别有一把锁,叫做GIL(Global Interpreter Lock),即全局解释器锁。GIL保证CPython进程中,只有一个线程执行字节码。甚至是在多核CPU的情况下,也只允许同时只有一个CPU上运行该进程的一个线程。CPython中:IO密集型,某个线程阻塞,就会调度其他就绪线程CPU密集型,当前线程可能会连续的获得GIL,导致其它线程几乎无法使用CPU在CPython中由于有

2022-04-22 01:48:57 1230

原创 Python 线程同步 详解

Python 线程同步1、概念2、`Event`2.1 示例 12.2 示例 22.3 示例 32.4 示例 43、`threading.Timer`3.1 示例 13.2 示例 24、`Lock`4.1 示例 14.2 示例 24.3 示例 34.4 示例 44.5 示例 54.6 锁的应用场景4.7 非阻塞锁的使用5、可重复锁`RLock`6、`Condition`6.1 `Condition`基本使用6.2 `Condition`用于生产者消费者模型6.2.1 生产慢,消费快6.2.2 使用`Cond

2022-04-21 14:20:43 2325

原创 Python 进程和线程详解(daemon/non-daemon/join/threading.local)

Python 进程和线程详解1、进程和线程概念2、线程的状态3、Python中的进程和线程3.1 Python的线程开发3.2 Thread 类3.2.1 线程创建、启动3.2.2 线程退出、线程传参3.2.3 `threading`的属性和方法3.2.3 `Thread`实例的属性和方法4、start() 和 run() 的区别和联系4.1 示例 14.2 示例 24.3 示例 34.4 示例 45、多线程6、线程安全问题6.1 `print`线程不安全6.2 改进`print`打印6.3 使用`logg

2022-04-21 04:31:41 1104

原创 Python 模块化 详解

Python 模块化 详解1、模块化介绍2、导入语句 12.1 示例2.2 总结3、导入语句 23.1 示例3.2 总结4、自定义模块4.1自定义模块命名规范5、模块搜索顺序6、模块的重复导入7、模块运行8、`if __name__ == '__main__'` 用途9、模块的属性10、其它总结及注意事项1、模块化介绍一般来说,编程语言中,库 包 模块 是同一概念,是代码组织方式模块 module:指的是Python的源代码文件包 package:指的是模块组织再一起的和包名同名的目录及其相关文件

2022-04-14 14:20:57 388

原创 Python 描述器 Descriptors 详解

Python 描述器 Descriptors 详解1、概念介绍2、通过示例验证2.1 正常的类属性访问2.2 非数据描述器且实例没有同名属性2.3 非数据描述器且实例有同名属性2.4 数据描述器且实例有同名属性2.5 数据描述器且实例有同名属性,验证属性查找顺序,无限递归2.6 数据描述器且实例有同名属性,验证属性查找顺序,解决无限递归2.7 数据描述器且实例有同名属性,禁止实例同名属性覆盖2.8 `__set_name__`3、描述器应用1、概念介绍描述器 是两个类之间的事描述器一般会用到4

2022-04-13 12:00:36 946

原创 Python 运算符重载中的反向方法(add iadd radd 区别与联系)

Python 运算符重载中的反向方法1、前提2、`__add__` 和 `__iadd__`3、`__add__`、`__iadd__`和`__radd__`4、`__add__` 、 `__iadd__`和`__radd__`改进1、前提print(type(NotImplemented)) # 特殊单值,是NotImplementedType的实例print(type(None)) # 特殊单值print(type(NotImplementedError)) # Exception 类

2022-04-13 08:50:16 1180

原创 Python 描述器的应用

Python 描述器的应用1、属性描述器的实现2、类静态方法描述器实现3、类方法描述器实现4、参数检查4.1 Version 14.2 Version 24.3 Version 31、属性描述器的实现# 属性描述器实现# 实例属性增加方法时,是没有绑定效果的,只有类属性方法调用时,才有绑定效果class Property: def __init__(self, fget, fset=None): self.fget = fget # 动态为实例添加属性,如果该属性是函数,

2022-04-13 08:37:58 216

原创 编写一个面积计算的类 - 圆 三角形 长方形

编写一个面积计算的类 - 圆 三角形 长方形注意类实例字典前后的变化import jsonimport pickleimport msgpackclass Shape: def __init__(self): self._area = None @property def area(self): # 抽象方法,子类需要完善,如果子类不完善,解释器会提示 raise NotImplementedError()class Tri

2022-04-08 07:37:50 630

原创 Python 上下文管理 魔术方法

Python 上下文管理 魔术方法1、上下文管理对象1.1 注意事项1.2 示例2、异常对上下文的影响3、`with...as...`语句4、方法参数5、显示函数执行时长5.1 装饰器函数5.2 使用上下文5.3 使用上下文和类调用5.4 装饰器类6、上下文应用6.1 应用场景6.2 `contextlib.contextmanager`6.3 示例 16.4 示例 21、上下文管理对象当一个对象同时实现了__enter__()和__exit__()方法,它就属于上下文管理的对象。__enter_

2022-04-06 05:29:59 403

原创 Python 魔术方法 详解

Python 魔术方法1、特殊属性2、查看属性2.1 示例 13、魔术方法3.1 实例化 `__new__`3.2 可视化3.3 `hash`3.4 `__bool__`3.5 运算符重载3.5.1 运算符重载应用场景 13.5.2 运算符重载应用场景 23.6 容器相关魔术方法3.7 可调用对象1、特殊属性2、查看属性__dir__ 返回类或者对象的所有成员名称列表dir()函数操作实例就是调用__dir__()如果dir([obj])参数obj包含方法__dir__(),该方法

2022-04-05 15:02:12 5417 2

原创 Python Class 类的继承与多继承

Python Class 类的继承与多继承1、继承概念2、继承中的访问控制3、示例3.1 示例 13.2 示例 23.3 示例 33.4 示例 43.5 示例 53.6 示例 63.7 示例 73.8 示例 83.9 示例 94、多继承4.1 概念介绍4.2 多继承语法4.3 类装饰器4.4 `Mixin` 类4.5 `Mixin` 示例1、继承概念面向对象的三要素之一:继承 inheritance在面向对象的世界中,从父类继承,就可以直接拥有父类的属性和方法,这样可以减少代码、多复用。子类可

2022-04-04 14:57:07 3696

原创 Python 异常处理 详解

Python 异常处理 详解1、错误和异常1.1 错误 `Error`1.2 异常 `Exception`1.3 总结2、产生异常3、捕获异常3.1 语法3.2 示例 13.3 示例 24、 异常类4.1 `Exception hierarchy`4.2 `BaseException`及子类4.3 `sys.exit()`示例 14.4 `sys.exit()`示例 24.5 `KeyboardInterrupt`示例4.6 `SyntaxError`示例4.7 自定义类示例5、多种捕获5.1 捕获规则5.

2022-04-04 14:10:07 6866 1

原创 Python Class 详解

Python Class 详解1、基本概念1.1 类 `class`1.2 对象 `instance / object`1.3 面向对象三要素1.4 哲学思想2、类2.1 类的定义2.2 类对象及类属性2.3 类的实例化2.4 `__init__` 方法2.5 实例对象 `instance`2.6 示例 12.7 示例 22.8 示例 33、对象属性3.1属性介绍3.2 实例属性的查找顺序3.3 示例 13.4 示例 23.5 示例 34、类方法 和 静态方法4.1 类方法4.2 静态方法4.3 总结4.4

2022-04-02 10:35:02 22835 2

原创 Python queue 模块

Python queue 模块1、Queue2、Queue & Threading -- 13、Queue & Threading -- 21、QueueInit signature: queue.Queue(maxsize=0)Docstring: Create a queue object with a given maximum size.If maxsize is <= 0, the queue size is infinite.from queue import

2022-04-01 09:23:15 787 2

原创 Python 正则表达式

Python 正则表达式1、介绍2、方法2.1 编译2.2 单次匹配2.3 全文搜索2.4 匹配替换2.5 分割字符串2.6 分组1、介绍Python 使用 re 模式提供了正则表达式处理的能力。使用 | 位或 运算开启多种选项2、方法2.1 编译Signature: re.compile(pattern, flags=0)Docstring: Compile a regular expression pattern, returning a Pattern object.设定 fl

2022-03-31 13:16:44 853 2

原创 Python shutil 模块详解

Python shutil 模块详解1、模块介绍2、copytree 示例3、move 示例1、模块介绍import shutil# copy data from file-like object fsrc to file-like object fdstcopyfileobj(fsrc, fdst, length=0)# Copy data from src to dst in the most efficient way possible.# If follow_symlinks is

2022-03-29 03:43:18 2673

原创 Python 处理 csv 文件模块

Python 处理 csv 文件模块1、csv 文件介绍2、csv 示例1、csv 文件介绍逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)CSV 是一个被行分隔符、列分隔符划分成行和列的文本文件CSV 不指定字符编码行分隔符为 \r\n ,最后一行可以没有换行符列分隔符常为逗号或者制表符每一行称为一条记录 record字段可以使用双引号括起来,也可以不使用。如果字段中出现了双

2022-03-29 01:56:04 770

原创 Python 处理 ini 文件 的模块

Python 处理 ini 文件 的模块1、`ini` 文件2、`configparser` 模块2.1 语法介绍2.2 操作示例1、ini 文件ini 文件是 Initialization File 的缩写,即初始化文件ini 文件示例中括号里面的部分称为 section每一个 section 内,都是 key=value 形成的键值对,key被称作 option 选项注意这里的 DEFAULT 是缺省 section 的名字,必须大写[DEFAULT]a = test[mysql

2022-03-28 15:02:40 2033

原创 Python 序列化 (Pickle/Json/Msgpack)

Python 序列化与反序列化1、定义2、`pickle` 库2.1 `pickle` 库函数方法2.2 dump 和 load 示例2.3 dumps 和 loads 示例3、`Json`3.1 `JSON` 数据类型3.2 数据转换3.3 常用方法3.4 示例3.5 总结4、`MessagePack`4.1 安装4.2 常用方法4.3 示例5、三种序列化方式对比6、序列化的一些实验6.1 序列化类--16.2 序列化类--26.3 修改序列化后的文件1、定义serialization 序列化:要设

2022-03-28 11:42:51 760

原创 Python 路径操作

Python 路径操作1、`os.path` 操作2、`pathlib` 模块2.1 目录初始化2.2 路径的拼接2.3 路径的分解2.4 获取路径2.5 目录的父目录2.6 目录的组成部分2.7 全局方法2.8 判断方法 绝对路径 路径解析2.9 创建 / 删除 / 迭代 目录2.10 练习题3、`Path` 通配符3.1 `a/` 目录结构如下3.2 `glob` 练习4、`Path` 匹配5、`stat`6、文件操作7、`os` 模块其它操作1、os.path 操作3.4 版本之前,使用 os.

2022-03-25 12:16:14 2127

原创 Python 验证 Linux 系统描述符是有限的

Linux Python lsof 限制

2022-03-25 00:18:39 2290

原创 Python 类文件对象 StringIO 和 BytesIO

Python 类文件对象 StringIO BytesIO File-like对象

2022-03-25 00:04:03 1351

原创 Python 文件 IO 操作详解

Python 文件 IO 操作详解1、文件 IO 常用操作2、文件打开操作2.1 打开命令2.2 命令参数2.2.1 路径2.2.2 mode2.2.3 buffering 缓冲区2.2.4 encoding 编码,仅文本模式使用2.2.5 errors2.2.6 newline2.2.7 closefd3、文件其他命令3.1 read3.2 write3.3 close3.4 其它命令4、文件指针5、上下文管理6、其它课堂笔记(描述不尽准确)1、文件 IO 常用操作2、文件打开操作2.1 打开命令

2022-03-24 08:56:44 3321

原创 Python 面向对象 之 反射 详解

Python 面向对象 之 反射 详解1、概述1.1 概念解释1.2 通过示例理解1.3 对象属性的内置函数1.4 对1.2示例使用内置函数改造2、反射相关的魔术方法2.1 `__getattr__()`2.2 `__setattr__()`2.2.1 示例12.2.2 示例21、概述1.1 概念解释运行时,区别于编译时,指的是程序被加载到内存中执行的时候反射, reflection, 指的是运行时获取类型定义信息一个对象能够在运行时,像照镜子,反射出其类型信息简单的说,在 Python 中,

2021-03-11 11:37:43 489

原创 Python insepct 模块 详解

Python insepct 模块 详解1、signature(callable) 函数签名方法2、其它方法3、parameters 对象4、应用示例4.1 装饰器代码如下1、signature(callable) 函数签名方法函数签名包含了一个函数的信息,包括函数名、它的参数类型、它所在的类和名称空间及其他信息import inspectdef add(x:int, y:int=5, *args, **kwargs) -> int: return x + yprint(

2021-03-09 22:00:42 231

原创 Python3 部分内建高阶函数

Python3 filter 内建函数1、map()2、filter()3、sorted4、sorted 与 list.sort 区别1、map()Map() 是一种内置的 Python 函数,它可以将函数应用于各种数据结构中的元素,如列表或字典。对于这种运算来说,这是一种非常干净而且可读的执行方式。def square_it_func(a): return a * ax = map(square_it_func, [1, 4, 7])print(x)print(list(x)

2021-03-07 21:54:21 260

原创 Python 之 字符串 str 的深入浅出

Python 之 字符串 str 的深入浅出1、字符串定义2、字符串初始化3、字符串元素访问--下标4、字符串`join`连接4.1 示例5、字符串`+`连接6、字符串分割6.1 `split` 分割6.1.1 `split`6.1.2 `rsplit`6.1.2 `splitlines`6.2 `partition`分割7、字符串大小写8、字符串排版9、字符串修改9.1 `replace`9.2 `strip`9、字符串查找9.1 `find`9.2 `index`9.3 `count`9.4 字符串查找

2021-02-14 17:29:52 741 1

原创 Python 之 元组 tuple 的深入浅出

Python 之 元组 tuple 的深入浅出1、元组 tuple1.1 元组概念1.2 元组定义初始化1.3 元组元素的访问1.4 元组查询1.5 元组其它操作2、命名元组 namedtuple2.1 定义2.2 示例1、元组 tuple1.1 元组概念元组一个有序的元素组成的集合元组使用小括号()表示元组是不可变对象1.2 元组定义初始化tuple(iterable=(), /) # 从可迭代对象中取出元素形成元组tuple() -> empty tuple # 空元

2021-02-14 14:19:07 383 2

原创 Python 之 列表 list 的深入浅出

Python 之 列表 list 的深入浅出1、概念2、列表 list 定义初始化3、列表 list 操作3.1 列表索引访问3.2 列表查询3.2.1 `idnex(value, [start, [stop]])`3.2.2 `count(value)`3.2.3 `len()`3.3 列表元素修改3.3.1 `list[index] = value`3.3.2 `append(object) -> None`3.3.3 `insert(index, objext) -> None`3.3.4

2021-02-14 11:10:48 341 1

原创 Python 之 bytes/bytearray 的深入浅出

Python 之 bytes/bytearray 的深入浅出1、前言1.1 Python3 引入两个新类型1.2 ASCII1.3 字符串与`bytes bytearray`1.4 编码与解码2、`bytes`2.1 语法2.2 `bytes`操作3、`bytearray`3.1 语法3.2 `bytearray`生成3.3 `bytearray`操作4、整型`int`和字节`bytes`4.1 常见转换方法4.2 示例5、字节序5.1 概念5.2 示例1、前言1.1 Python3 引入两个新类型

2021-02-13 22:09:50 2395 1

原创 Python 之 Base64 编码介绍及自定义函数进行编码

Base64 编码介绍及自定义函数进行编码1、 Base64 介绍2、Base64 编码规则3、Base64 字符表4、Base64 示例5、使用`Python`实现对一段字符串进行`Base64`编码5.1 思路5.2 代码1、 Base64 介绍基于64个可打印字符来表示二进制数据Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用B

2021-02-13 17:39:03 2761 1

原创 Python 自定义排序高级函数(值得学习处理思路)

Python 自定义排序高级函数1、自定义排序高级函数 `sort_self`2、示例13、示例21、自定义排序高级函数 sort_selfdef sort_self(iterable, *, key=None, reverse=False): # [5, 1, 3, 0, 6] newlist = [] # 5 for x in iterable: # 1 cx = key(x) if key else x # cx = 1 for i, y in

2021-02-13 13:12:07 229 1

原创 Python 之 functools 模块(reduce/partial/lru_cache/_make_key)

Python 之 functools 模块随行笔记1、`reduce` 方法1.1 语法1.2 示例2、`partial`方法(偏函数)2.1 概念2.2 语法2.3 本质2.4 示例2.4.1 示例12.4.2 示例23、`lru_cache`方法3.1 概念3.2 语法3.3 示例3.3.1 缓存计算结果3.3.2 优化斐波那契数列3.4 `lru_cache`原理3.4.1 联系知识点 自定义类3.4.2 联系知识点 `namedtuple`1、reduce 方法1.1 语法Docstring:

2021-02-13 11:25:36 347 1

原创 Python 函数注解 随性笔记)

Python 函数注解 随性笔记1、Python 函数定义的弊端2、函数定义的弊端的解决方法2.1 增加文档 Documentation String2.1 增加函数注解 Function Annotations3、业务应用1、Python 函数定义的弊端Python 是动态语言,变量随时可以被赋值,且能赋值为不同的类型Python 不是静态编译语言,变量类型实在运行期决定的动态语言很灵活,但是这种特性也是弊端难发现:由于不做任何类型检查,知道运行期问题才显现出来,或者线上运行时才能

2021-02-11 23:49:29 219 1

原创 Python 之 装饰器及文档字符串 随性笔记

Python 之 装饰器及文档字符串 随性笔记1、装饰器2、文档字符串3、装饰器执行过程3.1 请浏览以下代码3.2 结合以下问题进行思考4、装饰器函数的版本迭代改进4.1 第一版,函数属性会被替换4.2 第二版,构造函数还原函数属性4.3 第三版,柯里化新建函数4.4 第四版,改造成装饰器4.5 第五版,使用 functools4.6 第六版,增加函数执行时间判断4.7 第七版,把之前函数进行抽象1、装饰器装饰器(Decorators)是 Python 的一个重要部分。简单地说:它们是修改其他函数的

2021-02-11 21:55:28 850 2

原创 Python 高阶函数、高阶内建函数及柯里化 详解

Python 高阶函数、高阶内建函数及柯里化1、高阶函数1.1 Python 函数1.2 高阶函数1.3 实现计数器的高阶函数1.4 注意以下两个函数的区别1.4.1 函数内嵌套函数1.4.2 函数内部返回全局函数2、内建高阶函数2.1 排序 sorted2.1.1 语法2.1.2 示例2.2 过滤 filter2.2.1 语法2.2.2 示例2.3 映射 map2.3.1 语法2.3.2 示例3、柯里化3.1 概念3.2 示例1、高阶函数1.1 Python 函数函数在 Python 里是一等公民

2021-02-11 11:36:47 462 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除