- 博客(67)
- 资源 (7)
- 收藏
- 关注
原创 Python协程、环境兼容同步代码、高级用法
发现此处await的是一个协程,程序进入协程others() 中,执行print(‘start’),又遇到了await,此次await的是一个IO操作,则程序挂起,去执行其他的协程。直接对asyncio.ensure_future()创建的future对象进行await是不能实现并发的,必须将创建的对象返回给一个变量,在对该变量绑定的future对象进行await才可实现。协程遇到await,事件循环就会挂起该协程,执行别的协程,直到其他的协程也挂起或者执行完毕,再执行下一个协程。
2026-01-24 17:43:00
530
原创 Python进程、通信、进程池、生产者与消费者
但如果池中的进程数已经达到指定的最大值,那么该请求就会等待,直到池中有进程结束,才会用之前的进程来执行新的任务。当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。multiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情。
2026-01-24 17:40:25
448
原创 Python线程、队列、生产者与消费者、线程池
这种情况无法利用多核cpu的优势,如果想要绕开GIL,那么可以使用多进程的方式,创建多个进程,每个进程中只有一个线程。但是请注意,创建多进程消耗的资源比多线程消耗的资源大。join() 阻塞调用者线程,直至队列中的所有项目都被处理(即每个由put()调用加入队列的项目都有一个相应的task_done()调用)。在之前的案例中我们使用了多个线程对一个全局变量进行修改的操作,如果多个线程都对一个全局变量进行操作的话会出现资源竞争的问题,会导致计算错误。
2026-01-24 17:37:17
581
原创 Python异常处理、文件操作
概述异常是程序运行时发生的错误。异常类型基本的异常处理语法使用try与except代码块进行异常捕捉。捕获多个异常为不同的异常使用多个except。使用元组一次捕获多个异常类型。try:passpasspasstry:a = x / y# b = name使用else和finally子句else:如果没有异常发生,则执行。finally:无论有无异常都会执行,常用于资源清理。try:# 尝试执行的代码except :# 异常时的处理。
2026-01-24 17:34:16
491
原创 Python_迭代器、生成器、装饰器、闭包
我们可以让类的构造函数__init__()接受一个函数,然后重载__call__()并返回一个函数,也可以达到装饰器函数的效果。但这还不够,Python要求迭代器本身也是可迭代的,所以我们还要为迭代器实现__iter__方法,而__iter__方法要返回一个迭代器,迭代器自身正是一个迭代器,所以迭代器的__iter__方法返回自身即可。实际上,在使用next()函数的时候,调用的就是迭代器对象的__next__方法(Python3中是对象的__next__方法,Python2中是对象的next()方法)。
2026-01-24 17:32:29
613
原创 Python单例模式
_new__方法的主要功能是创建一个类的实例,在类的实例化过程中被调用,所以一般将__new__方法称之为初始化方法。单例模式在软件开发中非常有用,尤其是当需要保证一个类有一个全局唯一的实例时。单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。除了以上两种方式可以实现单例模式外,还有其他方式可以实现。__new__方法要先于__init__方法执行。使用元类创建:当前方式仅作为了解。实现单例模式的两种方式。__new__方法概述。
2025-12-14 07:29:38
273
原创 Python魔术方法
因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以__del__的调用是由解释器在进行垃圾回收前自动触发,执行一些完善工作。注:__init__方法的执行是由创建对象触发的,即:对象 = 类名();而对于__call__方法的执行是由对象后加括号触发的,即:对象() 或者 类()()。返回实例对象的字符串信息 print(类实例)时被触发。如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值。
2025-12-14 07:29:24
832
原创 Python多继承的继承顺序
如果一个变量的名字没有在当前类的字典中发现,将搜索祖先类(比如父类)直到被引用的变量名被找到(如果这个被引用的变量名既没有在自己所在的类又没有在祖先类中找到,会引发一个AttributeError异常 )。最后,如果该值在父类中被改变(例如,我们执行语句Parent.x = 3),这个改变会影响到任何未重写该值的子类当中的值(在这个示例中被影响的子类是Child2)。随后,如果任何它的子类重写了该值(例如,我们执行语句Child1.x = 2),然后,该值仅仅在子类中被改变。调用父类方式不同导致结果不同。
2025-12-14 07:29:04
264
原创 Python类属性
默认情况下,当通过同一个类创建了多个实例对象之后,每个实例对象之间是相互隔离的。但是有时候有些数据需要在多个对象之间共享,此时该怎么办呢?答:类属性类属性的概念想要在多个对象之间共享数据,即一些属性需要在多个对象之间共享,这样的属性就是类属性那怎样定义类属性呢?class 类名:类属性 = ....即在class内且在def之外定义的变量,就叫做类属性代码示例tools_num = 0 # 定义一个类属性,用来存储共享的数据print("工具的总数为:", Tool.tools_num)
2025-12-14 07:28:51
438
原创 Python面向对象进阶-重写、super、多态
概述我们知道一个子类如果继承了父类,那么当通过子类对象去调用一个方法时,如果子类对象中没有此方法,那么就会到继承的父类中查询,如果查询到有则进行调用。但是有时候我们发现子类继承的父类的方法不能百分之百满足子类对象的需求。则此时就需要在子类中定义一个与父类相同的名字的方法,此时子类对象调用这个方法时即使父类中有,但依然不会调用,而是调用子类中的方法。重写的定义我们把子类中定义了与父类中相同名字的方法,叫做重写(子类的方法覆盖了父类中的同名方法)。代码示例注意事项。
2025-12-14 07:28:34
385
原创 Python面向对象进阶-继承
概述继承:通俗的说就是不劳而获,不需要付出一下子什么都有了。Python中也有继承这个功能,它能够实现在一个类中可以使用另外一个类中的代码。在开发较大的项目时,往往需要多个类实现,当我们定义一个新类时如果这个新的类的功能与之前某个类功能很类似,此时通过使用继承可以让新类不用写代码或者写很少的代码,就实现了想要的所有功能,这样一来编写的代码少了也就提高了开发效率。格式定义生活中,如果子女想要继承父辈的遗产,往往需要一定的证明素材,这样才有合法性。
2025-12-13 23:11:14
525
原创 Python面向对象进阶-对象关联
我们在上学的时候,每个同学是一个对象,那么教室也是一个对象。每个同学肯定是属于某一个教室的,例如张三是205班的。那么怎样才能用代码来实现他们之间的关系呢?在上述的代码中,我们发现如果当前的教室对象与学生对象是没有任何关系关联的。如果想要实现学生属于教室,那么只需要两步就能实现。如以下代码,创建了一个教室对象,一个学生对象,该怎样将它们两个联系起来呢?上述代码已经完成了对象学生与教室的关联,那么怎样调用呢?
2025-12-13 23:09:08
369
原创 Python面向对象进阶-私有方法
生活中我们肯定去过银行办理过业务,我们可以从银行的大门进入大厅,取号等待办理业务,可以在大厅里来回走动,这个区域是所有人都可以随意进出的。而银行办公人员工作的地方,只能有相应的权限的办公人员才能进出,这个区域对于外来办理业务的人员来说是禁止的。那么试想,一个较大软件系统肯定有很多个可以让用户直接调用的接口(API可以简单理解为方法)这些接口可以任意调用,而有些接口就不能使用。在Python中,我们把可以通过对象直接调用的方法叫做公有方法,不能通过对象直接调用的方法叫做私有方法。
2025-12-13 23:08:24
368
原创 Python面向对象进阶-私有属性
欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入MarkdownText-to-HTMLAuthorsJohnLuke。
2025-12-13 23:07:18
550
原创 阿里云的CDN羊毛快去薅,25年CDN
阿里云的CDN羊毛快去薅,25年CDN,点击套餐管理,点击续费,选择设置续费规则,会自动打开续费页面,选择续费1年,0元,反复操作25次,刷到2050年。
2025-12-13 22:51:14
215
原创 Python面向对象
定义类class 类名:方法列表class Hero: # 类名def info(self): # 方法print("英雄各有见,何必问出处。")类名的命名规则按照大驼峰命名法。info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量,这个变量指向了实例对象。创建对象Python中,可以根据已经定义的类创建出一个或多个对象变量名 = 类名()"""
2025-11-15 13:13:38
611
原创 Python函数匿名与递归
没有名字的函数称之为匿名函数,在Python中用lambda关键字定义。匿名函数的作用使用方式用lambda关键词能创建匿名函数。这种函数得名于省略了用def声明函数的标准步骤注意点:lambda函数能接收任何数量的参数但只能返回一个表达式的值,其默认就是返回的,不用写return既然我们已经知道def定义函数时的变量存储的是函数的引用,所以只要有了这个函数的引用,也就可以通过变量名()的方式调用函数。
2025-11-15 13:08:33
317
原创 Python函数变量引用
上述问题的原因核心点是:在Python中即使是函数名也是一个变量名,只不过这个变量没有指向普通的数据,而是指向了一段代码;也就是说如果定义了一个函数名字叫做test1就好比是一个变量名test1指向了那个代码块而已,所以当上述代码第十一行test1 = test2时,就相当于让test1变量不在指向原本的代码块,而是指向新的代码块即test2指向的代码块,所以当第十二行执行test1函数时,会输出我是test2函数…Python中调用函数时,传递实参实际上都是是引用,即传递的都是地址。
2025-11-15 13:06:51
562
原创 Python函数进阶
函数返回值拆包:如果一个函数通过return返回了一个元组、列表、集合,可以通过拆包的方式将返回值进行拆分到每个变量中,这就是返回值拆包。返回值拆包的作用通过函数返回值拆包,可以快速的将具体的数据用变量进行存储,这样对数据的处理会更加方便# 通过返回值拆包,快速使用每个数据# 没有通过返回值拆包,这样用数据时稍微复杂拆包的使用high = 178age = 18# 通过返回值拆包,能够更加方便的对每个数据使用。
2025-11-15 13:05:03
732
原创 Python函数嵌套调用与相互隔离
一种函数中又调用了另外一个函数的方式为函数嵌套调用函数嵌套的作用能够让函数之间互相使用,增加代码复用性打个比方,你已经写好了一个功能把它封装为了函数,我再实现另外一个功能的时候发现也需要你写的那个功能函数,此时我不用再写一遍,而是直接将你写的代码拿来用即可,此时我的函数与你的函数都在一个.py文件中,想要用你的函数,我就必须在我写的函数中调用练习案例一:写一个函数:打印一条横线写另外一个函数:打印自定义行数的横线。
2025-11-08 21:05:47
842
原创 Python四种自定义函数与变量作用域
函数根据有没有参数,有没有返回值,可以相互组合,一共有4种无参数,无返回值无参数,有返回值有参数,无返回值有参数,有返回值无参数无返回值函数此类函数,不能接收参数,也没有返回值,一般情况下用来打印提示等类似的功能print('点菜系统')print('1.羊肉涮涮锅')print('2.牛肉涮涮锅')print('3.猪肉涮涮锅')无参数有返回值函数此类函数,不能接收参数,但是可以返回某个数据,一般情况下像采集数据等功能会用到# 获取温度# 这里是获取温度的一些处理过程。
2025-11-08 21:04:21
267
原创 Python函数参数与返回值
上述的代码,虽然能够实现2个数的加减乘除,但有个较大的问题:4个函数中每次都需要重新获取这2个数字,我们如果想要计算1和2的加减乘除的结果,就需要输入4遍数字1,4遍数字2,这太麻烦了。想要解决这个问题,大体的思路应该是,在调用加减乘除这4个函数之前先获取要操作的2个数字,然后将这2个数字传递给函数让它们直接用即可而不是每个函数都重新获取。说明:一个函数中可以有多个return,但是只要有一个return被执行到,那么函数就会结束了,因此后面的return没有什么用处。定义函数时,使用return。
2025-11-08 21:01:19
805
原创 Python自定义函数与内置函数
上面的知识我们知道,函数就是一个独立功能的代码块,想要用函数一定要掌握两块知识定义函数(即怎样制作函数)调用函数(即怎样使用函数)下面我们就来研究函数的定义以及调用。定义函数def 函数名(形参):函数体函数名:一定有,按照命名规则起个名字,注意Python中建议使用“小写加下划线”的方式,例如print_info而不用PrintInfo函数体:一定有,就是整个函数真正要执行的代码,注意函数体前面缩进4个空格形参:可有可无,专门用过来存储调用时传递给函数的数据用的示例代码。
2025-11-08 20:59:16
794
原创 Python函数
函数:一个功能独立的代码块# 定义一个函数,能够完成打印信息的功能print(' 人生苦短,我用Python ')作用函数在编程中是非常重要的一个知识点,大体功能如下能够将部分代码划分为一个整体的功能只需定义函数1次就可以使用N次,可以大大减少了代码的冗余代码看上去更加整洁美观示例一:未使用函数的情况# 输出第1遍 佛祖镇楼`\\ _ /`;print(" ")print(" 佛祖镇楼 BUG辟易 ")print(" 佛曰: ")print(" 写字楼里写字间,写字间里程序员;
2025-11-08 20:56:30
209
原创 Python容器类型之深拷贝和浅拷贝
深拷贝克隆一份,修改拷贝后的对象中的可变元素不对原对象内容产生影响copy模块中的deepcopy()list1 = [[“张三”, “李四”], “王五”, “赵六”, “钱七”]list2 = copy.deepcopy(list1) # 进行深拷贝。
2025-11-07 07:29:19
492
原创 Python容器类型之拆包
例如,有一个元组(11, 22, 33, 44)想快速的提取每个元素且赋值给num1, num2, num3, num4这4个变量。=右边要拆的数据元素的个数 要 与=左边存的变量个数相同。默认取到的是字典的key,而不是value。拆包:是一种快速提取数据的方式。经典面试题:交换两个变量的值。
2025-11-07 07:28:48
141
原创 Python容器类型之推导
请写出一段Python代码实现分组:一个list里面的元素,比如[1,2,3,…100]变成[[1,2,3],[4,5,6]…集合推导式中也可以用if等,与列表推导式在格式上很类似,这里就不做过多的介绍,请类别列表推导式进行学习。案例二:快速生成一个1~10内key可以1时value为2,key为2时value3…注意:没有元组推导式,使用元组推导获取的结果是生成器对象(在Python进阶课程中学习)案例一:快速生成一个1~10内key为某个数此时value为平方的字典。案例二:列表推导式中用到了if。
2025-11-07 07:27:02
307
原创 Python容器类型之字典
通过上面的2个场景的描述,发现虽然列表可以很轻松的实现数据的增删改查,但当多个数据时,想要快速定位到某个数据就会很不方便。问:有没有方法,既能存储多个数据,还能在访问元素的时候就可以很方便就能够定位到需要的那个元素呢?场景二:学生信息列表,每个学生信息包括学号、姓名、年龄等,如何从中找到某个学生的信息?基于此原因,Python发明了一种特殊的下标,可以快速的找到想要的数据。字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改。如果感觉一行太长,写不开,可以用如下的方式。
2025-11-05 21:43:58
409
原创 Python容器类型之容器类型互转
所谓互转,就是把一种数据类型在数值不变的情况下转换为另外一种数据类型。使用set,可以快速的完成对list、tuple中的元素去重复的功能。当前容器类型的互转不包含字典!
2025-11-05 21:39:49
274
原创 Python容器类型之元组和集合
元组是存储多个数据的一种方式元组与列表类似,不同之处在于元组的元素不能修改元组使用小括号(),列表使用方括号[]>>> aTuple元组的使用访问元组# 定义一个元组# 获取元组中的元素# 遍历不能修改元组# 定义一个元组nums[0] = 400 # 这里会报错,元组中的数据不能被修改File "/Users/poppies/Desktop/元组.py", line 4, in <module>
2025-11-05 21:38:13
644
原创 Python容器类型之列表
技巧:虽然Python中的列表可以存储多个不同的数据类型,但一般情况下我们很少这么做,而是把数据类型相同的数据放到一个列表,这样操作时会更加方便,否则就会出现一会整数,一会字符串很容易出错。通过前面学习的字符串我们可以实现用它存储一串信息,例如存储一个人的名字顾安,那么如何存储咱们班所有同学的名字呢?类似while循环的嵌套,列表也是支持嵌套的,一个列表中的元素是一个列表类型那么这就是列表的嵌套。一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配。
2025-11-05 21:35:59
451
原创 Python容器类型之字符串
定义如下定义的变量a,存储的是数字类型的值a = 100如下定义的变量b,存储的是字符串类型的值# 或者双引号或者单引号中的数据,就是字符串下标下标:就是标记空间的一个数字有些文档叫法为“索引”,个人觉得其实下标更好的体现它的特点。如果有字符串:name = ‘abcdef’,在内存中的实际存储如下:下标为正数第0个空间 第1个空间 第2个空间 第3个空间 第4个空间 第5个空间下标为负数。
2025-11-05 21:32:47
660
原创 Python循环continue与break
在循环的过程中,有时可能会因为某些条件的满足或者不满足需要结束整个while,还有可能在当次循环代码执行过程中剩下的不执行了而是进行一次的循环,这种时候就需要用2个功能。注意:for循环使用最多的场景是直接遍历可以迭代的对象,而什么是迭代,什么是对象我们还没有学习,因此本节课程只讲解简单的使用for。continue在循环嵌套中的作用于break几乎一样,只不过它是结束本次循环,而break是结束整个循环。通过上面的案例,我们知道break、continue是可以直接放到循环中使用的。
2025-11-03 22:13:00
872
原创 Python循环嵌套
想一想:while循环可以将原本写多遍重复的代码改成只写一遍,从而提高了代码的复用性;那如果在一次while循环的过程中有多个重复的功能要执行,该怎么办呢?要求:打印如下图形 - 九九乘法表。while嵌套代码示例。while嵌套实际应用。
2025-11-03 22:10:35
491
原创 Python循环
在Python中,循环是一种用于重复执行一段代码直到满足某个条件为止的控制结构。Python主要提供了两种类型的循环:for循环和while循环。学过其它编程语言的同学请注意,Python中没有do-while循环,只有while和for。小提示:当前代码的执行顺序可以使用Pycharm中的Debug模式进行代码单步执行。Python中只有2种循环执行代码的方式。跟媳妇承认错误,说一万遍:媳妇,我错了。Python中的循环方式。软件中循环的使用场景。while循环的使用。
2025-11-03 22:09:45
430
原创 Python判断语句
坐火车或者地铁的实际情况是:先进行安检如果安检通过才会判断是否有车票,或者是先检查是否有车票之后才会进行安检,即实际的情况先对某个条件进行判断然后再判断另外一个条件的,这样的情况该怎样解决呢?条件3满足时做事件3,那该怎么实现呢?要求:从键盘获取自己的年龄,判断是否大于或者等于18岁,如果满足就输出“哥,已成年,网吧可以去了”说明:age的值是30,所以age >= 18的结果是True,所以就会执行3个print。在if判断中,最多只能有1个else,但可以有N个elif,必须有1个if。
2025-11-03 22:08:57
781
原创 Python逻辑运算符
and x and y 布尔"与":如果 x为False,x and y返回False,否则它返回 y的值 True and False, 返回False。or x or y 布尔"或":如果 x是True,它返回True否则它返回 y的值 False or True, 返回True。一般的用法:之前结果为True,那么not True就是False,如果之前是False,那么not False就是True。一般的用法:两边只要有一个True,结果就为True。
2025-11-03 22:05:34
467
原创 Python比较运算符
= 检查两个操作数的值是否相等,如果是则条件变为真。如a=3,b=3,则a == b为True。= 检查两个操作数的值是否相等,如果值不相等,则条件变为真。如a=1,b=3,则a!< 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。如a=3,b=3,则a <= b为True。= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。如a=3,b=3,则a >= b为True。
2025-10-26 10:43:17
434
原创 Python布尔类型
Python中的常见数据类型像整型、浮点型、字符串型之前我们都见过了,除了这些类型之外还有一些,本节课我们来看布尔类型。因为布尔类型的数据只有两种结果,所以这种数据类型往往用在判断的场景。False:表示假,通俗的说表示不成立。Ture:表示真 ,通俗的说表示成立。提示:具体的应用会在学习if时会讲解。
2025-10-26 10:42:24
417
原创 Python运算符
9.0//2.0,输出结果4.0。//= 取整除赋值运算符 c //= a等效于 c = c // a。**= 幂赋值运算符 c **= a等效于c = c ** a。+= 加法赋值运算符 c += a等效于c = c + a。-= 减法赋值运算符 c -= a等效于c = c - a。*= 乘法赋值运算符 c *= a等效于c = c * a。/= 除法赋值运算符 c /= a等效于c = c / a。%= 取模赋值运算符 c %= a等效于c = c % a。
2025-10-26 10:38:09
312
医疗服务价格项目规范(xls导入oracle和mysql数据库)
2025-10-25
105常见JS参数加密思维导图
2025-10-24
告别龟速搜索!这款轻量神器「Everything」让你的文件检索快如闪电!
2025-10-24
PDF工具箱python源码
2025-10-24
Python思维导图大全(14张图)
2023-04-23
pb开发框架(多国语言)
2009-10-27
最新医院制度大全汇编.doc
2019-12-11
PB进阶代码(很全的)
2009-10-17
PB控制摄像头的源码(独立运行的对象,方便使用)
2010-05-14
it项目管理表格(很全的)模版
2009-12-04
软件中心项目经理手册
2009-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅