Python多线程、多进程
Python多线程、多进程知识点多线程
备注:
多线程有两种应用场景,第一种是直接调用Thread()的方法,适用于实现过程不复杂的情景。第二种通过继承Thread()类,然后重写run()方法来实现,适用于实现过程复杂的情景
多线程是共享全局变量的
第一种方法:适用于单一方法实现功能的情况
123456789101112131415161718192021222324252627import threading import time def say(message): for i in range(5): print("第{0}次说话,说话内容:{1}".format(i, message)) time.sleep(1) def dance(): for i in range(5): print("第{0}次跳舞".format(i)) time.sleep(1) ...
Python装饰器
知识点背景装饰器是在原有函数不做修改的基础上对原函数添加新的功能
实现原理12345678910111213141516def set_func(func): print("装饰器装饰的时候就会执行") def call_func(*args, **kwargs): print("被装饰程序执行时会执行的语句") return func(*args, **kwargs) return call_func# 函数本身也是一个对象,直接写函数名相当于传递了该函数的引用# 相当于执行fun = set_func(fun),该句执行完以后将fun的引用传递给call_func,然后将变量名fun的引用指向call_func@set_func # 运行到此处时,就已经开始装饰了def fun(num): print("函数本身的功能") return numfun(1)# 程序运行的时候,执行到@set_func,此时开始给fun(num)函数添加了装饰,且将fun函数的引用方 ...
Python闭包
Python闭包知识点闭包内容
闭包定义
闭包是一个函数中嵌套着一个函数,相比较对象而言其占用系统空间更小,可以实现小功能。相比较函数而言,其能够传递函数和数据,而函数只能实现功能。
代码结构
123456789def fx(a,b): num = 100 def sum(x): # 当需要修改函数中的变量值时,需要用nonlocal进行申明,反之就不用修饰,直接调用即可 nonlocal num num = 20 print(a*x+b+num) # 函数名未加名称相当于返回该函数的引用 return sum
匿名函数、函数、闭包、对象之间的区别
匿名函数:完成最基本的功能,传递的是这个函数的引用,只有功能。
函数:普通函数能够完成较为复杂的功能,传递的是这个函数的引用,只有功能
闭包:闭包能够完成较为复杂的功能,传递的是这个闭包中的函数和数据,因此传递的是功能+数据
对象:对象能够完成最为复杂的功能,可以传递很多数据和很多功能,因此传递的是数据+功能
灵魂拷问:闭包和函数的区别
拓展
pyth ...
Python魔法方法
魔法相关的内容知识点切片1234list_name = [1, 2, 3, 4, 5, 6]list_name[:3] = [11] # 会用新列表的信息替换掉原列表的前三个元素值,按照个数一一对应,少则其它位置不变list_name[:3] = [11, 22, 33, 44, 55, 55] # 多的话,原列表除切片位置意外的保持不变,然后切片位置全部用新列表覆盖
私有属性
获取实例对象中的所有实例属性:实例对象名.__dict__
获取类对象中所有的类属性:类名.__dict__
私有属性在对象中的存储方式
对一个对象设置私有属性,则对象会将其名称修改为【_类名__属性名】来存储
魔法属性123456789101112131415161718192021222324252627282930313233343536373839# __doc__: 返回类的描述,也就是类的注释对象名.__doc__# __class__:获取生成当前实例对象的类名对象名.__class__# __module__:获取对象所处的模块(文件名)对象名.__module__# __init_ ...