Python
文章平均质量分 71
NecroZarok
喜欢新事物,热爱技术
展开
-
python上下文管理器,with
对于系统资源如文件、数据库连接、socket 而言,应用程序打开这些资源并执行完业务逻辑之后,必须做的一件事就是要关闭(断开)该资源。 比如 Python 程序打开一个文件,往文件中写内容,写完之后,就要关闭该文件,否则会出现什么情况呢?极端情况下会出现 “Too many open files” 的错误,因为系统允许你打开的最大文件数量是有限的。 同样,对于数据库,如果连接数过多而没有及时关闭的...原创 2019-10-30 16:07:48 · 93 阅读 · 0 评论 -
python拆包-args、kwargs
class Son1(Parent): def __init__(self, name, age, *args, **kwargs): # 为避免多继承报错,使用不定长参数,接受参数 print('Son1的init开始被调用') self.age = age super().__init__(name, *args, **kwargs) ...原创 2019-10-29 11:16:54 · 215 阅读 · 0 评论 -
python多继承问题-MRO方法解析顺序表
函数名 其实是变量名。若两个模块有同名函数,函数变量名会指向最后import的那个函数 python很少使用重载 文件描述符fd最多1024个 python3里有一种默认的处理父类调用顺序的C3算法,用来保证每个类只调用一次。每个类都有一个__mro__属性,这个属性是一个存放了继承链每个类的元组,super(类A,self)方法就是按照这个元组元素顺序查找并调用类A的下一个类,通常用这个方法替...原创 2019-10-29 10:50:20 · 186 阅读 · 0 评论 -
python私有化、import、封装
私有化 xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问(避免与其他模块命名冲突等场景) __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到) __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字 xx_:单后置下划...原创 2019-10-28 18:30:11 · 594 阅读 · 0 评论 -
Python-GIL锁
GIL(全局解释锁) 1.每个线程在执行过程都需要GIL,保证同一时刻只有一个线程可以执行代码(避免共享全局变量问题) 2.Python多线程本质上没有提高CPU利用率 3.由于历史原因,Cpython虚拟机(解释器)无法移除GIL 4.所以这个问题是解释器的问题,不是Python语言本身的问题 5.其他语言写的解释器没有GIL 6.线程释放GIL锁的情况:在IO操作等可能会引起阻塞的system...原创 2019-10-24 00:03:03 · 175 阅读 · 0 评论