Python核心开发高级知识
欢迎各位小哥哥小姐姐阅读本<小生>的文章,对大家学习有帮助,请点赞加关注哦!!!!!!!!!!!
您的点赞和关注将是我持续更新的动力呢.^v^
有不懂的问题可以私聊我哦!
GIL(全局解释器锁):
由于历史的原因, 在Cpython虚拟机(解释器)中每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。
线程释放GIL锁的情况: 在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执行完毕后,必须重新获取GIL Python 3.x使用计时器(执行时间达到阈值后,当前线程释放GIL) Python 2.x,tickets计数达到100 Python可以使用多进程利用多核的CPU资源。
深拷贝、浅拷贝:
浅拷贝是对于一个对象的顶层拷贝(拷贝了引用,并没有拷贝内容) 深拷贝是对于一个对象所有层次的拷贝(递归)
私有化:
xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到) __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__ , __ 不要自己发明这样的名字 xx_:单后置下划线,用于避免与Python关键词的冲突 通过name mangling(名字重整(目的就是以防子类意外重写基类的方法或者属性)如:_Class__object)机制就可以访问private了。 父类中属性名为__名字的,子类不继承,子类不能访问 如果在子类中向__名字赋值,那么会在子类中定义的一个与父类相同名字的属性 _名的变量、函数、类在使用from xxx import *时都不会被导入
import 导入模块
sys.path:import导入路径
reload:重新导入模块
封装、继承、多态
封装:
在使用面向过程编程时,当需要对数据处理时,需要考虑用哪个模板中哪个函数来进行操作,
但是当用面向对象编程时,因为已经将数据存储到了这个独立的空间中,这个独立的空间(即对象)中通过一个特点的变量(class)能够获取到类(模板),
而且这个类中的方法是有一定数量的,与此类无关的将不会出现在本类中,因此需要对数据处理时,可以很快速的定位到需要的方法是谁 这样更方便。
全局变量是只能有1份的,多很多个函数需要多个备份时,往往需要利用其它的变量来进行储存; 而通过封装会将用来存储数据的这个变量 变为了对象中的一个“全局”变量,只要对象不一样那么这个变量就可以再有1份,所以这样更方便。 代码划分更清晰。 多态: 实例对象调用一个方法,那么实例对象会先在子类中寻找这个方法,如果子类重写了父类的方法,就调用子类的方法,如果子类中没有,就去父类中调用。
相关推荐
夜斗不是神 2020-11-17
huavhuahua 2020-11-20
Yasin 2020-11-16
xiaoseyihe 2020-11-16
千锋 2020-11-15
diyanpython 2020-11-12
chunjiekid 2020-11-10
wordmhg 2020-11-06
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16