Python
文章平均质量分 75
本人很懒,什么都没有留下
Amae
这个作者很懒,什么都没留下…
展开
-
算法:计数排序
目录一、简述二、算法思路三、图解实例3.1 整体过程图解编辑 3.2 把待要排序的列表用列表示出来编辑3.3 找出待排序列表中最大的数,构造新的数组:累计计数数组,数组内容全部为0 【蓝色部分】,长度为:待排序数组最大值+1 3.4 在计数数组上,统计待排序数组,中元素出现的次数 【蓝色部分】编辑3.5 把计数数组变更为累计数组【确定其在排序好列表中位置】 3.6 进行最终结果排序四,代码实现计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性原创 2022-06-20 23:31:26 · 774 阅读 · 1 评论 -
算法:堆排序
分布进行堆排序拆解实现原创 2022-06-19 19:55:24 · 649 阅读 · 0 评论 -
Python: 装饰一个类
给类增加属性的两种方式第一种:通过函数实现第二种通过装饰器来实现原创 2022-06-18 15:09:51 · 505 阅读 · 0 评论 -
Python:python中IO多路复用使用
IO多路复用大多数操作系统都是支持select和poll Linux2.5+ 支持epoll BSD、Mac支持kequeue Windows的IOCPPython的select库实现了select、poll系统调用,这个基本上操作系统都是支持。部分实现了epoll。底层的IO多路复用模块开发中的选择1、完全跨平台、使用select、poll。但是性能较差2、针对不同操作系统自行选择支持的技术,这样做会提高IO的处理能力 ...原创 2021-07-25 08:36:25 · 393 阅读 · 0 评论 -
Python:异步编程,同步、异步、IO模型概念
目录异步编程同步、异步概念阻塞、非阻塞同步、异步、阻塞、非阻塞的区别与联系同步IO、异步IO、IO多路复用IO两个阶段IO模型异步编程同步、异步概念同步是指:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去,异步是指:当程序1调用程序2时,程序1径自继续自己的下一个动作,不受程序2的的影响。但是程序1会一直盯着程序2,直到程序2响应了,程序1会直接调用程序2,异步不保证多长时间程序2最中响应同步调用是指:发送方发出数据后原创 2021-07-17 23:47:30 · 1048 阅读 · 18 评论 -
Python:网络编程:SocketServer
SocketServersocket编程过于底层,编程虽然有套路,但是想要写出健壮的代码还是比较困难的,所以很多语言都对socket底层 API进行了封装,Python的封装就是------socketserver模块,它是网络服务编程模块,便于企业级快速开发类的继承关系SocketServer简化了网络服务器的编写它有4个同步类:TCPServer、UDPServer、UnixStramServer、UnixDatagramServer2个Mixin类:ForkingMixi翻译 2021-07-17 11:09:58 · 634 阅读 · 0 评论 -
Python:UDP编程、心跳机制、UDP的应用场景
UDP服务端编程流程1、创建服务端流程创建socket的对象。socket.SOCK_DGRAM 绑定IP和Port,bind方法 传输数据 接受数据,socket.recvform(bufsize,[,flags]),获得一个二元组(string,address) 发送数据,socket.sendto(string,address)发给某地址信息 释放资源import socketsercice_udp = socket.socket(type=socket.SOCK_原创 2021-07-10 19:48:13 · 1312 阅读 · 6 评论 -
Python:网络编程、TCP客户端编程
TCP客户端编程步骤客户端编程步骤创建Socket对象 连接到远端服务器的IP和Port,connect()方法 传输数据 使用send,recv发送、接受数据 关闭连接、释放资源简单步骤原创 2021-07-04 12:47:03 · 164 阅读 · 2 评论 -
Python:网络编程TCP、MackfFile、聊天编写
Socket介绍socket套接字:Python中提供socket.py标准库,非常底层的接口库Socket是一种通用的网络编程接口,和网络层次没有一一对应的关系Socket文件本身就是传输用, 传输的话就要有一个东西来缓冲,说到地就是BUffer,BUffer其实就是个队列协议族:AF表示Address Family,用于socket() 第一个参数名称 含义 AF_INET IPV4 AF_INET6 IPV6 AF_UNIX Unix Domain原创 2021-07-04 08:01:15 · 320 阅读 · 6 评论 -
Python:concurrent异步并行任务编程模块、 线程池、进程池、上下文管理
目录concurrent包ThreadPoolExecutor对象ProcessPoolExecutor对象支持上线文管理总结concurrent包3.2版本引入的模块。异步并行任务编程模块,提供一个高级的异步可执行的便利接口。提供2个池执行器:ThreadPoolExcentor 异步调用线程池的ExecutorProcessPoolExecutor 异步调用的进程池的ExecutorThreadPoolExecutor对象首先需要定义一个池的执行器对..原创 2021-06-27 16:32:59 · 484 阅读 · 2 评论 -
Python:多进程multiprocessing,多进程和多线程的应用
多进程由于Python的GIL,多线程未必是CPU密集型程序的好的选择多进程可以完全独立的进程环境中运行程序,可以充分地利用多处理器但是进程本身的隔离代理的数据不共享也是一个问题,而且线程比进程轻量级multiprocessingProcess类Process类遵循了Thread类的API,减少了学习难度;先看一个例子,前面介绍的单线程、多线程比较的例子的多进程版本import multiprocessingimport datetimedef cacl(i):原创 2021-06-27 10:00:29 · 595 阅读 · 2 评论 -
Python:信号量semaphore
semaphone信号量和Lock很像,信号量对象内部维护一个倒数计数器,每一次acquire都会减1,当acquire方法发现计数为0就阻塞请求的线程,直到其他的线程对信号量release后,计数大于0,恢复阻塞的线程名称 含义 Semaphore(value=1) 构造方法。value小于0,抛ValueError异常 acquire(blocking=True,timeout=None) 获取信号量,计数器减1,获取成功返回True releas...原创 2021-06-26 12:10:52 · 985 阅读 · 0 评论 -
Python:线程同步,Barrier屏障
Barrier屏障有人翻译成栅栏,建议还是使用屏障,可以想象成路障,道闸,Python3.2引入的新功能原创 2021-06-20 22:38:13 · 698 阅读 · 2 评论 -
Linux:Pycharm中使用Git
Git私服中创建项目版本库原创 2021-06-20 09:49:48 · 720 阅读 · 0 评论 -
Python:线程同步,Event事件、Lock锁,RLock锁、Condition消费者模型
线程同步概念:线程同步,线程间协同,通过某种技术,让一个线程访问某些数据时,其他线程不能访问这些数据,直到该线程完成对数据的操作 不同的操作系统实现的技术有所不同,有临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、时间Even等EventEvent时间,是线程间通信机制中最简单的实现,使用一个内部的标记Flag,通过Flag的True或False的变化来进行操作名称 含义 set() 标记设置为True cle.原创 2021-06-13 20:54:03 · 945 阅读 · 2 评论 -
Python:线程与并发、Threading、线程安全、daemon线程
并发:基本概念并发和并行区别并行(parallel):同时做某些事,可以互不干扰的同一个时刻做几件事 并发(concurrency):也是同时做某些事,但是强调,一个时间段内有事情处理举例:乡村公路一条车道,半幅路面出现了坑,交警指挥交通。众多车辆在这一时段通过路面的事件,这就是并发。交警指挥,车辆排队通过另外半幅路面,一个方向放行3分钟,停止该方向通行,换另一个方向放行高速公路的车道,双向4车道,所有车辆(数据)可以互不干扰的在自己的车道上奔跑(传输)。在同一个时刻,每条车道上可能同时.原创 2021-06-05 20:31:34 · 1043 阅读 · 3 评论 -
Python:类的魔术方法、Hash、可视化、运算符重载、容器相关
类的特殊方法属性 含义 __name__ 类、函数、方法等的名字 __module__ 类定义所在的模块明 __class__ 对象或类所属的类 __bases__ 类的基类元组,顺序为他们在基类列表中出现的顺序 __doc__ 类、函数的文档字符串,如果没有定义则为None __mro__ 类的mro,class.mro()返回结果保存在__mro__中 __dict__ 类或实例的属性,可写字典 __subclasse原创 2021-05-24 07:47:44 · 493 阅读 · 3 评论 -
Python:类魔术方法、反射、描述器
类的特殊方法属性 含义 __name__ 类、函数、方法等的名字 __module__ 类定义所在的模块明 __class__ 对象或类所属的类 __bases__ 类的基类元组,顺序为他们在基类列表中出现的顺序 __doc__ 类、函数的文档字符串,如果没有定义则为None __mro__ 类的mro,class.mro()返回结果保存在__mro__中 __dict__ 类或实例的属性,可写字典 __subclasse原创 2021-05-16 17:54:56 · 417 阅读 · 2 评论 -
Python:类的多继承
目录Python不同版本的类多继承多继承弊端 Python多继承实现多继承的缺点MixinMixin类Python不同版本的类Python2.2之前是没有共同的祖先的,之后引入Object类,它是所有类的共同祖先类Object Python2中为了兼容,分为古典类(旧式类)和新式类 Python3中全部都是新式类 新式类都是继承自Object的,新式类可以使用super#古典类在python2.x中运行class A: passprint...原创 2021-05-09 18:38:03 · 652 阅读 · 4 评论 -
Python:类的单继承
类的继承面向对象三要素之一,继承Inheritance人类和猫类都继承自动物类。个体继承自父母,继承了父母的一部分特征,但也可以有自己的个性。在面向对象的世界中,从父类继承,就可以直接拥有父类的属性和方法,这样就可以减少代码、多服用。子类可以定义自己的属性和方法class Animal: def __init__(self,name): self._name = name def shout(self): print("{} sh原创 2021-05-09 11:01:55 · 767 阅读 · 2 评论 -
Python:面向对象
Python中一切皆对象面向对象的三要素封装 组装:将数据和操作组装到一起 隐藏数据:对外暴露一些接口,通过接口访问对象。比如驾驶员使用汽车,不需要了解汽车的构造细节,只需要知道怎么使用部件,怎么驾驶就行,踩了油门就能跑,可以不了解后面的激动原理 ...原创 2021-05-05 22:35:50 · 785 阅读 · 14 评论 -
Python:类型注解、inspect
函数定义的弊端Python是动态语言,变量随时可以被赋值,且能赋值为不同的类型Python不是静态编译型语言,变量类型是在运行器决定的动态语言很灵活,但是这种特性也是弊端def add(x,y): return x + yprint(add(1,2))print(add("Hello","Word"))print(add(1,"Word")) #Python是强类型这里会报错难发现:由于不做任何类型检查,直到运行期问题才显现出来,或者线上运行时才能暴露出问 题原创 2021-04-24 22:29:28 · 535 阅读 · 0 评论 -
Python:funtools模块、覆盖被装饰的函数模块名、名称、限定名、文档、参数注解
update_wrapperdef update_wrapper(wrapper, wrapped,assigned = WRAPPER_ASSIGNMENTS,updated = WRAPPER_UPDATES):类似copy_properties功能 wrapper 包装函数、被更新者,wrapped 被包装函数、数据源 元组WRAPPER_ASSIGNMENTS中是要被覆盖的属性【'__module__', '__name__', '__qualname__', '__doc__',原创 2021-04-17 10:31:37 · 324 阅读 · 1 评论 -
Python:函数 ----》装饰器函数
目录引入装饰器【无参】文档字符串带参装饰器引入一个加法函数,想增强它的功能,能够输出被调用过以及调用的参数信息def add(x, y): return x + y用嵌套函数、柯里化来解决def add(x,y): return x + ydef logger(fn): def _loger(*args,**kwargs): print("函数开始运行") ret = fn(*args,**kw...原创 2021-04-10 22:13:20 · 271 阅读 · 0 评论 -
Python:高阶函数,柯里化Currying
高阶函数First Class Object函数在Python中是一等公民 函数也是对象,可调用的对象 函数也是对象,可调用的对象高阶函数数学概念 y=g(f(x)) 在数学和计算机学科中,高阶函数应当是至少满足下面一个条件的函数 接受一个或多个函数作为参数 输出一个函数 栈里面存放的是,函数的变量,压栈过程是有序的,堆里面存放的是调用函数的对象的变量,是无序的内键高阶函数【常用的】排序:sorted(iterable[, key][, reverse])返.原创 2021-04-10 15:30:59 · 229 阅读 · 2 评论 -
Python:bytes、bytearray
bytes、bytearrayPython3引入两个新类型bytes:不可变字节序列 bytearray:字节数组、可变字符串与bytes字符串是字符组成的有序序列,字符可以使用编码来理解bytes是字节组成的有序的不可变序列bytearray是字节组成的有序的可变序列编码与解码字符串按照不同的字符集编码encode返回字节序列bytesencode(encoding='utf-8', errors='strict') -> bytes字节序列...原创 2021-04-04 20:26:55 · 1034 阅读 · 0 评论 -
Python:小数据池,深浅复制
我们来看一个小知识点复制list1 = list(range(5))list2 = list(range(5))print(list1 == list2) #返回的是Trueprint(list1 is list2) #返回的是False【==】只是对值得比较 ;【is】是对内存地址的判断赋值 【只是把内存的指针的发生了改变】这个过程有没有发生复制?list1 = list(range(5))list2 = list(range(5))list...原创 2021-04-04 16:44:29 · 270 阅读 · 1 评论 -
Python:递归函数
递归函数的定义:函数直接或间接调用自身就是递归 递归函数需要有边界、递归前进段、递归返回段 递归一定要有边界条件 当边界不满足的时候,递归前进 当边界条件满足的时候,递归返回斐波那契数列【用递归来实现】用for循环来看是怎么写的:...原创 2021-03-23 23:11:45 · 334 阅读 · 0 评论 -
Python:生成器函数,yield from
引入生成器generator:生成器指的是生成器对象,可以由生成器表达式得到,也可以使用yield关键字得到一个生成器函数,调用这个函数得到一个生成器对象生成器函数:函数体中包含yeild语句的函数,返回生成器对象 生成器对象,是一个可迭代对象,是一个迭代器 生成器对象,是延迟求值,惰性求值的yield与return的比较遇到yield,函数就会让出此次操作,去执行函数体别的语句 return,直接打断函数的执行,返回结果普通函数,生成器函数的比较例子一: 单个yiel原创 2021-03-06 16:44:26 · 360 阅读 · 0 评论 -
Python:函数的销毁
全局函数销毁方法一:重新定义同名函数def foo(a): return aprint(foo(1),id(foo),foo.__defaults__)def foo(a): return aprint(foo(1),id(foo),foo.__defaults__)结果:1 26875848 None 1 27317784 None函数的ID,不同,说明这是两个不同的函数方法二:使用del 【报错:NameError: name 'foo' .原创 2021-02-28 21:16:36 · 1393 阅读 · 0 评论 -
Python:函数默认值的作用域【__defaults__】【__kwdefaults__】
例子:引入def foo(abc=[]): abc.append(200) print(abc)foo()foo()结果:[200] [200, 200]第二次调用为什么问什么打印的是[ 200,200],而不是[ 200 ]?因为函数即对象,python把函数的默认值放在了属性中,这个属性就伴随着这个函数对象的 整个生命周期,和abc这个变量没有关系,abc调用玩就消失了 可查看foo.__defaults__属性查看例子:函数值的默认值是可变类型原创 2021-02-28 20:53:59 · 5219 阅读 · 5 评论 -
Python:闭包函数,nonlocal使用
嵌套函数:什么是嵌套函数使用外部函数中变量def out(): x = 5 def inn(): print("inn函数中 x = {}".format(y)) print("out函数中 x = {}".format(x)) inn()out()结果:inn函数中 x = 5out函数中 x = 5内部函数是可以引用外部函数的变量【仅限于定义内部函数的外部函数】修改外部变量中函数def out(): x .原创 2021-02-28 11:16:44 · 597 阅读 · 2 评论 -
Python:函数的变量作用域,global,变量使用原则
作用域:一个标识符的可见范围,这就是标识符的作用域。一般常说的是变量的作用域全局作用域:在整个程序运行环境中都可见x = 90def out(): print(x)out()结果:90局部作用域:在函数、类等内部可见,局部变量使用范围不能超过其所在的局部作用域...原创 2021-02-28 09:35:25 · 288 阅读 · 4 评论 -
Python:函数参数传参方式
目录函数定义、调用函数参数传参函数参数可变参数传参例子参数解构函数定义、调用def语句定义函数 def 函数名(参数列表): 函数体(代码块) [return 返回值] 函数名就是标识符,命名要求一样 Python的函数没有return语句,隐式会返回一个None值 定义中的参数列表成为形式参数,只是一种符号表达,简称形参 调用 调用的方式,就是函数名加上小括号,括号内写上参数 调用时写的参数是实际参数,是实实在在传...原创 2021-02-06 21:07:47 · 1975 阅读 · 0 评论 -
Python:内置数据机构--> 元组
元组一个有序的元素组成的集合,不可变对象 支持索引(下标) 正索引:从左至右,从0开始, 负索引:从右至左 t = ("woshi",1,3,"wobushi")print(t[0])print(t[-1])结果:woshiwobushi 使用小括号 ( ) 表示 元组定义t_tuple = tuple() t_tuple = () t_tuple = (1,) #必须加逗号,才表示是元组元组的方法:index(value,[s...原创 2021-02-02 21:13:33 · 110 阅读 · 0 评论 -
Python:对文件的操作--->CSV文件的操作
写入CSV文件字符串写入CSV文件方法 import csvcsv_data = '''\我是KEY,我是value我是,张三我是,里斯我是,我自己'''with open ("./test1.csv","w",encoding="utf8") as fq: for line in csv_data.splitlines(): #csv_data.splitlines按行分割 fq.write(line + "\n")结果:我是KEY,我是value我是,张原创 2021-02-01 22:12:45 · 473 阅读 · 0 评论 -
Python:内置数据结构--> 列表
列表列表是排列整齐的队伍 列表的中内的个体称作元素 元素可以是任意对象(数字、字符转、对象、列表等) 列表是可变的列表的定义,用 [ ] 表示list = list() --> new empty list list = (iterable) -->new list initialized from iterable's items list_one = list()lst_two = []list_thr = (list(range5)) 列...原创 2021-01-27 23:28:53 · 251 阅读 · 0 评论 -
Python:内置数据结构-->数值型和判断类型
数值型int:整型,没有大小限制,受限于内存区域的大小 float:浮点数,有整数部分+小数部分组成,只有双精度型 8字节64位存储空间分配了52位来存储浮点数的有效数字,11位存储指数,1位存储正负号,即这是一种二进制版的科学计数法格式【详细解释】 complex:复数,有实数和虚数组成,实数和虚数部分都是浮点数 bool:int的子类,只有两个实列True,False对应1和0,可以和整数直接运算数值类型转换int(xx):返回一个整数 float(xx):返回一个浮点数 co原创 2021-01-26 22:31:40 · 349 阅读 · 0 评论 -
Python:内置数据结构 -->字符串
一、字符串常用的方法1、str.upper() : 把英文小写,全部变成大写,中文不发生改变a = "abc" #小写英文,全部转换成大写print(a.upper())>>> ABCb = "中国,Abc" #只针对小写英文起效果print(b.upper())>>> 中国,ABC2、str.lower() : 把英文大写,全部变成小写,中文不发生改变d = "ABC" #大写的英文,全部转换成小写print(d.lower()原创 2020-08-17 23:16:06 · 402 阅读 · 0 评论 -
Python知识点总结_【字符串方法、格式化输出、切片】~随时更新【第一篇】
1、字符串的创建value1 = "Hello Python" #双引号value2 = 'hello Python' #单引号value3 = ''' Hellow Python ''' #三的单引号2、格式化输出第一种:%占位符【占位和补位的个数,要一一对应】%s:字符串**'''%s:字符串格式化输出,(%s实际适用所有的数据类型)'''s = '''***********学生信息***********姓名:%s性别:%s年级:%s年龄:%s***********学生原创 2020-08-02 21:03:01 · 314 阅读 · 0 评论