Python高阶知识
文章平均质量分 70
高阶知识
henry_rhy
这个作者很懒,什么都没留下…
展开
-
【ImportError: cannot import name ‘current_app‘ from ‘celery‘】celery导入错误的解决办法
celery执行报错原创 2022-11-15 15:37:05 · 2143 阅读 · 2 评论 -
python setup.py bdist_wheel 报错的处理办法
在进行pythn项目打包的时候,报错提示:error: invalid command ‘bdist_wheel’解决办法:重新升级下 whell 和 setuptools的版本即可这样就可以了,打包成功了原创 2022-07-06 09:56:55 · 3755 阅读 · 0 评论 -
协程gevent模块的使用
什么是协程?协又叫又称微线程,英文名Coroutine,协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。 为啥说它是一个执行单元,因为它自带CPU上下文。这样只要在合适gr的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。通俗的描述:协程看做是是线程中的一个特殊的函数,这个函数执行的时候,可以在某个地方暂停,并且可以重新在暂停处,继续运行,协程在进行切换的时候,只需要保存当前协程函数中的一些临原创 2022-07-05 17:21:15 · 1674 阅读 · 0 评论 -
python的魔术方法大全
python的魔术方法大全 在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”(魔术方法),例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中有相应描述,这边给大家把所有的魔术方法汇总了一下,希望对大家的学习有所帮助。二、属性相关的魔法方法......转载 2022-06-30 14:22:31 · 6259 阅读 · 0 评论 -
concurrent.futures --- 启动并行任务(线程池)
concurrent.futures 模块提供异步执行可调用对象高层接口而异步执行可以由 ThreadPoolExecutor 线程或由 ProcessPoolExecutor 使用单独的进程来实现。 两者都是实现抽像类 Executor 定义的接口。一、ThreadPoolExecutor 线程池线程池执行器:ThreadPoolExecutor类如何使用:线程池的优点:ThreadPoolExecutor类基本语法使用:ThreadPoolExecutor类上下文管理协议的语法使用:上下文管理协原创 2022-06-30 11:12:28 · 633 阅读 · 0 评论 -
队列和进程的使用
队列的认识:队列的的类型:类型一:(先入先出) Queue队列顾名思义:先入先出,先进入的数据,先获取出来初始化Queue()对象时,若括号中没有指定最大可接收的消息数量,或数量为负值,代表可接受的消息数量没有上限往队列中添加数据的方法:Queue.put(item)获取队列中数据的方法:Queue.get()判断队列是否满了:Queue.full()判断队列是否为空:Queue.empty()返回队列消息数量:Queue.qsize()Queue.task_done(原创 2022-06-28 18:01:35 · 676 阅读 · 0 评论 -
多线程的使用
多任务的概念:就是操作系统可以同时运行多个任务单核CPU可不可以执行多任务:什么是并发和并行并发能做什么呢,一个简单的例子,假如一个人要同时完成两件事情,需要多久?用代码实现如下:假如2个人要同时完成两件事情,需要多久,这就需要用到线程模块,多线程一起执行。一 、线程模块的详细使用threading模块介绍:创建线程对象: threading.Thread(target=任务函数)线程参数的使用Thread类有以下参数:线程方法的使用Thread类提供了以下方法:原创 2022-06-28 16:44:18 · 345 阅读 · 0 评论 -
内存管理机制
python中创建的对象的时候,首先会去申请内存地址,然后对对象进行初始化,所有对象都会维护在一个叫做refchain的双向循环链表中,每个数据都保存如下信息:一、引用计数机制引用计数增加:1.1 对象被创建1.2 对象被别的变量引用(另外起了个名字)1.3 对象被作为元素,放在容器中(比如被当作元素放在列表中)1.4 对象被当成参数传递到函数中最后的执行结果是,a 这个变量被引用了4次引用计数减少:2.1 对象的别名被显式的销毁2.2 对象的一个别名被赋值给其他对象 (例:比如原来的原创 2022-06-23 14:35:28 · 202 阅读 · 0 评论 -
元类的使用
在Python里一切都是对象(object),基本数据类型,如数字,字符串,函数都是对象。对象可以由类(class)进行创建。那么既然一切都是对象,那么类是对象吗?是的,类也是对象,那么又是谁创造了类呢?答案也很简单,也是类,一个能创作类的类,称之为元类(type)1. 类的定义对象是通过类创建的,如下面的代码:解析:可以看见对象 Mywork 是类 Work 创建的实例。然但是可以看到Work的类型时由一个叫 type 的类创建的实例。即 Mywork —》 Work —》 type 创建上面的例原创 2022-06-23 11:51:13 · 295 阅读 · 0 评论 -
多态的概念
一、面向对象编程的三大特征:封装,继承,多态二、实现多态的步骤注意点:鸭子类型概念:它并不要求严格的继承体系,关注的不是对象的类型,而是它是否具有要调用的方法(行为)原创 2022-06-22 20:10:01 · 3695 阅读 · 0 评论 -
python中的属性管理机制
一、私有属性私有属性具体表现为:_参数名 : 声明式私有属性__参数名 : _类名 + 私有属性名双下划线的私有属性,在去调用的时候 ,并没有__attr3 这个属性名,用 dict 属性,去查看属性字典看下:可以看到是双下划线的私有属性是:_类名 + 私有属性名二、属性限制-__slots__方法定义过slots属性来限制类实例的属性,只能绑定slots指定的属性,不能添加slots之外的属性添加slots之外的属性,会直接报错执行结果:报错:AttributeError: ‘Demo’ ob原创 2022-06-22 20:03:38 · 138 阅读 · 0 评论 -
上下文管理器协议的实现
一、在上下文管理器协议的过程中,涉及到两个魔术方法__enter__方法 和 __exit__方法上下文管理器协议:__enter__方法: 进入enter方法返回的结果被as后面的变量接收exit: 退出with中所有的语句执行完毕执行 执行 exit实现一个简单的文件操作来看下上下文管理器协议用pymysql实现一个操作数据库的类,实现上下文管理器协议,实现退出上下文时,自动关闭游标,断开连接...原创 2022-06-22 19:21:31 · 252 阅读 · 0 评论 -
设计模式之-单例模式
导读:一、什么是单例模式二、实现单例模式三、如何去实现单例模式基于__new__ 方法实现具体实现思路:执行结果:可以看到都是同一个对象装饰器实现方式的思路:通过类实现:原创 2022-06-22 18:59:29 · 97 阅读 · 0 评论 -
python内置魔术方法(616)
什么是魔术方法(魔法方法/特殊方法)一、python内置的基本魔术方法init方法call方法1.没有实现 __call__方法时,对象是不可以被调用的执行结果:提示:‘Demo’ object is not callable ----- 没有__call__方法2.如果要类创建对象出来的对象可别调用,就要用到__call__方法new 方法类的对象要能被调用:首要new方法创建对象,然后通过init方法初始化什么时候会需要用到New方法:干预类实例化对象的过程注意点:bool(s原创 2022-06-22 17:54:38 · 274 阅读 · 0 评论 -
装饰器结构应用与基本使用(611)
什么是装饰器什么是装饰器的开放封闭原则装饰器的语法装饰器的作用装饰器装饰的原理例如:我现在定义一个函数work1,调用函数会打印原函数功能那我要在他的基础上扩展新功能,扩展的新功能就是装饰器函数我在定义一个闭包函数decorator最终的实现装饰器的调用:执行结果:装饰器的基本结构:实例:假如实现一个可以统计任意函数执行时间的装饰器执行结果:如果被调用的函数有参数和返回结果,而定义的装饰器没有去处理,就会报错 :带有参数和返回结果的装饰器怎么处理带参数和结果处理的基本结构如下实例:原创 2022-06-15 11:36:51 · 142 阅读 · 0 评论 -
闭包函数&递归函数的使用
1.什么是递归函数2.简单的递归函数结构:函数内部是在内部在调用自身,例如work,调用2次3.如何查看最大递归深度(可以用sys库查看)递归深度默认不超过1000次,超过最大值就会报错4.实例:实现数值的阶乘二、闭包函数的应用1. 什么是闭包2. 什么是封闭的作用域3. 闭包的作用4.闭包函数有什么特性例如:以下的闭包函数...原创 2022-06-14 17:06:53 · 158 阅读 · 0 评论 -
functools模块中的内置函数使用(69)
functools 是一个官方库,模块是用于高阶函数,即——参数或(和)返回值为其他函数的函数。通常来说,此模块的功能适用于所有可调用对象。functools 这个库提供了三个内置函数:partial, lru_cache, wraps1.partial函数作用:给函数的参数设置默认值(提前给参数设置固定的值)用法:实例1:这个函数去调用时,第一个值传的值都是一样的,那就可以用partial函数使用partial函数,将name的值设定为默认值,去调用的时候只需要传其他值即可结果:2原创 2022-06-14 16:02:35 · 131 阅读 · 0 评论 -
python内置函数&匿名函数的使用
python内置函数查看:https://docs.python.org/zh-cn/3.7/library/functions.html1. filter函数:过滤数据的函数基本格式:filter(参数1:过滤规则函数,参数2:可迭代对象 )实例1:获取列表中大于30的数据执行结果:2. map函数基本格式:map函数:(参数1:处理函数, 参数2:可迭代对象)实例2:计算列表中所有数据的二次方法执行结果:3. exec函数:执行python代码场景:1.可以执行txt文本内的python代原创 2022-06-14 15:29:04 · 201 阅读 · 0 评论 -
生成器函数的使用(67)
1. 什么是生成器2. 生成器表达式b. 推导式结合条件语句语法:tuple = ( i for i in xxx if 条件)c. 推导式结合三元运算符语法:tuple = (条件成立的值 if 条件 else 条件不成立的值 for i in xxx)3. 什么是生成器函数实例1:这是一个生成器函数:去进行函数调用时,是没有返回任何数据的,哪怕 yield 返回了数据 2222打印返回的是生成器对象:......原创 2022-06-14 14:48:34 · 258 阅读 · 0 评论 -
python高阶知识之——可迭代对象和迭代器
一、Iterable(可迭代对象):1、什么叫可迭代对象?2、python中哪些是可迭代对象?如果不使用迭代协议,注释掉函数去执行,会报错提示不是这不是一个可迭代对象如果不使用迭代协议,注释掉函数去执行,会报错提示不是这不是一个可迭代对象注意:所有的可迭代对象,都可以使用内置函数iter转换为迭代器3、迭代协议:4、迭代器协议:迭代器协议由一个 iter 方法和 next 方法共同构成。现了这两个方法的对象就实现了迭代器协议二、 Iterator(迭代器):1、 什么是迭代器?2、迭代器的2个原创 2022-06-04 21:10:02 · 498 阅读 · 0 评论 -
python高阶知识之——字典/集合推导式
什么是推导式:推导式是用来快速的生成数据1、推导式类型2、字典推导式推导式结合条件语句语法:dict = { key:value for i in xxx if 条件}推导式结合三元运算符语法:dict = { key:value if 条件 else key2:value2 for i in xxx}3、字典推导式原则4、注意事项5、集合推导式......原创 2022-06-04 20:47:52 · 206 阅读 · 0 评论 -
python高阶知识之——列表推导式(63)
推导式:推导式结合三元运算符语法:li = [条件成立的值 if 条件 else 条件不成立的值 for i in xxx]3. 列表推导式原则:4. 注意事项:5.三元运算符语法:li = [条件成立的值 if 条件 else 条件不成立的值]......原创 2022-06-04 20:38:59 · 239 阅读 · 0 评论