python进阶
xuewen1696
这个作者很懒,什么都没留下…
展开
-
python对象内存模型
原文:Python的垃圾回收机制(二)之内存模型 1. Python对象内存模型首先介绍一下Python对象的内存模型,如下图1所示: 图1. PyObject对象内存模型上图可以看到,一个PyObject必须包含ob_refcnt和ob_type。ob_refcnt是这个对象的引用计数,而ob_type则是指向_typeobject结构体的指针,它是Python内部的一种特殊对象,它是用来制定一...转载 2018-05-03 12:40:42 · 3208 阅读 · 0 评论 -
深入 Python 列表的内部实现
本文将介绍列表在 CPython中的实现,因为毕竟Cpython 又是 Python 最为常用的实现。Python 中的列表非常强大,看看它的内部实现机制是怎么样的,一定非常有趣。下面是一段 Python 脚本,在列表中添加几个整数,然后打印列表。Python 1 2 3 4 5 6 7 8 9 1...转载 2018-09-13 15:22:08 · 1784 阅读 · 0 评论 -
理解 Python 的 LEGB
原文链接:https://segmentfault.com/a/1190000000640834理解 Python 的 LEGB名字空间Python 的名字空间是 Python 一个非常核心的内容。其他语言中如 C 中,变量名是内存地址的别名,而在 Python 中,名字是一个字符串对象,它与他指向的对象构成一个{name:object}关联。Python 由很多名字空间,而 LE...转载 2018-08-04 20:13:30 · 212 阅读 · 0 评论 -
python--装饰器详解
文章先由stackoverflow上面的一个问题引起吧,如果使用如下的代码:@makebold@makeitalicdef say(): return "Hello"打印出如下的输出:<b><i>Hello<i></b>你会怎么做?最后给出的答案是: def makebold(fn): def wra...原创 2018-08-04 20:06:52 · 342 阅读 · 0 评论 -
python学习笔记 -- __call__
一、 __call__:python的__call__方法可以让类的实例具有类似于函数的行为。 二、 __call__的好处: 1. 简化对象下方法的调用:这个很好理解便不再废话2. 模糊了对象和函数的区别:class A: def go(self): return object class B: def run(self): return...原创 2018-07-25 19:57:00 · 198 阅读 · 0 评论 -
python3 metaclass--创建类的过程分析
之前学python的时候就看见过metaclass的文章,没看懂,那篇博客后面说到,metaclass是python的黑魔法99% 不会用到。于是果断放弃。不过最近看flask-WTForm组建的源码,一开始就是metaclass。没办法,硬着头皮重新看metaclass。基本了解,现在总结如下:一、metaclass干嘛的?metaclass是指定类由谁创建。能够定制类的创建过程指定类由谁创建的...原创 2018-06-27 15:54:20 · 3256 阅读 · 2 评论 -
python3学习笔记-- __new__
先看一段代码:class Person: def __new__(cls, name, age): print('__new__ called.') return super(Person, cls).__new__(cls) def __init__(self, name, age): print('__new__ calle...原创 2018-06-16 16:55:53 · 2275 阅读 · 1 评论 -
线程安全及Python中的GIL
摘要作者博客链接.什么是线程安全? 为什么python会使用GIL的机制?在多核时代的到来的背景下,基于多线程来充分利用硬件的编程方法也不断发展起来, 但是一旦 牵扯到多线程,就必然会涉及到一个概念,即 线程安全, 本文就主要谈下笔者对线程安全的一些理解.而Python为很多人所抱怨的一点就是GIL,那么python为什么选择使用GIL, 本文也就这个问题进行一些讨论.Contents摘要引入线程...转载 2018-05-29 16:54:21 · 216 阅读 · 0 评论 -
python GIL
讲GIL之前先弄清楚几个小概念1. 同步IO&异步IO 同步IO:当程序执行到IO操作时,等数据来了才进行下一步操作,数据不来就阻塞在IO操作处。 异步IO:当程序执行到IO操作时,不等,就去执行其他代码了。一段时间后,当IO返回结果时,再通知CPU进行处理。 如何实现异步IO也是一个问题,到时候另讲。2. 并行&并发 并行:系统具有同时处理多任务的能力,由...原创 2018-05-29 16:44:11 · 173 阅读 · 0 评论 -
python学习笔记--ThreadLocal
我们知道多线程环境下,每一个线程均可以使用所属进程的全局变量。如果一个线程对全局变量进行了修改,将会影响到其他所有的线程。为了避免多个线程同时对变量进行修改,引入了线程同步机制,通过互斥锁,条件变量或者读写锁来控制对全局变量的访问。只用全局变量并不能满足多线程环境的需求,很多时候线程还需要拥有自己的私有数据,这些数据对于其他线程来说不可见。因此线程中也可以使用局部变量,局部变量只有线程自身可以访问...原创 2018-06-11 14:52:51 · 606 阅读 · 0 评论 -
python——赋值与深浅拷贝
python——赋值与深浅拷贝 初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~预备知识一——python的变量及其存储 在详细的了解python中赋值、copy和deepcopy之前,我们还是要花一点时间来了解一下python内存中变量的存储情况。 在高级语言中,变量是对内存及其地址的抽象。对于...转载 2018-05-19 12:49:40 · 184 阅读 · 0 评论 -
Python3之正则表达式详解
正则表达式本节我们看一下正则表达式的相关用法,正则表达式是处理字符串的强大的工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下。当然对于爬虫来说,有了它,我们从HTML里面提取我们想要的信息就非常方便了。 实例引入说了这么多,可能我们对它到底是个什么还是比较模糊,下面我们就用几个实例来感受一下正则表达式的用法。我们打开开源中国提供的正则表达式测试工...转载 2018-09-25 20:24:24 · 429 阅读 · 0 评论