
python
hdg_回忆
这个作者很懒,什么都没留下…
展开
-
Python中的迭代器和生成器
迭代器(Iterator) 迭代器可以看作是一个特殊的对象,每次调用该对象时会返回自身的下一个元素,从实现上来看,一个迭代器对象必须是定义了__iter__()方法和next()方法的对象;iter( )方法是让对象可以用for … in循环遍历时找到数据对象的位置,next( )方法是让对象可以通过next(实例名)访问下一个元素。 生成器 一边循环一边计算的机制,称为生成器,通过yield语句或生成器函数快速生成迭代器,可以不用iter和next方法, 生成器本质上也是一个迭代器,与迭代器不同的是生成器原创 2021-07-15 14:27:56 · 131 阅读 · 0 评论 -
python中的内置方法
__new__方法是真正的类构造方法,用于产生实例化对象,方法必须返回一个对象; __init__方法是初始化方法,负责对实例化对象进行属性值初始化,此方法必须返回None; __call__类似于在类中重载 () 运算符,使得类实例对象可以像调用普通函数那样,以“对象名()”的形式使用; __repr__和__str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向程序员; del__销毁对象,del x并不直接调用x.del(),前者会将 x 的引用计数减一,而后者仅会在原创 2021-07-15 12:13:08 · 164 阅读 · 0 评论 -
垃圾回收机制
python采用的是引用计数为主,标记-清除和分代回收两种机制为辅的策略。 引用计数: 每个对象维护一个(ob_ref)字段,用来记录该对象当前被引用的次数,每当新的引用指向该对象时,它的引用计数加1,当引用失效时计数减1,一旦对象的引用计数为0,该对象立即被回收,对象占用的内存空间将被释放。(它的缺点是需要额外的空间维护引用计数,这个问题是其次的,不过最主要的问题是它不能解决对象的“循环引用”) 标记-清除: 分为两个阶段:第一阶段是标记阶段,GC会把所有的『活动对象』打上标记,第二阶段是把那些没有标记的原创 2021-07-15 11:08:50 · 127 阅读 · 0 评论 -
Python中内存管理
python中的内存管理机制——Pymalloc (1)引用计数: 当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。 (2)垃圾回收: 1、当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉。它会去检查那些引用计数为0的对象, 然后清除其在内存的空间。当然除了引用计数为0的会被清...原创 2019-07-22 20:24:51 · 314 阅读 · 0 评论 -
GIL机制
(1)在非python环境中,单核情况下,同时只能有一个任务执行。多核时可以支持多个线程同时执行。但是在python中, 无论有多少核,同时只能执行一个线程。究其原因,这就是由于GIL的存在导致的。 (2)GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定。 某个线程想要执行,必须先拿到GIL,...原创 2019-07-22 20:26:34 · 489 阅读 · 0 评论 -
Python里面如何拷贝一个对象?
第一种理解: 赋值: 创建了对象的一个新的引用,修改其中任意一个变量都会影响到 另一个 浅拷贝: 创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的 方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如 list();3,copy模块的copy()函数} 深拷贝: 创建一个新的对象,并且递归的复...原创 2019-07-22 20:34:11 · 1078 阅读 · 0 评论