
AdvancePython
shfscut
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2-2 type、object和class之间的关系
慕课网课程:Python高级编程和异步IO并发编程关系图解释如下:1.type是一个对象,它是type本身的一个实例print(type(type)) # <class 'type'>2.object是一个对象,它是type的一个实例print(type(object)) # &lt...原创 2018-05-09 08:51:50 · 1149 阅读 · 2 评论 -
11-4 线程同步 - Lock、RLock
Lock 加入锁Lock之后,在lock.acquire()和lock.release()之间的代码是线程安全的total=0lock=Lock()def add(): #1. dosomething1 #2. io操作 #3. dosomething3 global total for i in range(1000000): ...原创 2018-05-25 10:57:59 · 431 阅读 · 0 评论 -
11-5 线程同步 - condition使用以及源码分析
import threading#条件变量condition,用于复杂的线程间同步class XiaoAi(threading.Thread): def __init__(self, lock): super().__init__(name="小爱") self.lock = lock def run(self): self....原创 2018-05-25 12:24:11 · 405 阅读 · 0 评论 -
2-1 python中一切皆对象
函数和类也是对象,属于Python的一等公民, 具备以下特性 : 1.赋值给一个变量 2.可以添加到集合对象中 3.可以作为参数传递给函数 4.可以当做函数的返回值原创 2018-05-09 08:52:06 · 240 阅读 · 0 评论 -
11-1 Python中的GIL
GIL: global interpreter lock (cpython) python中的一个线程对应于C语言中的一个线程 GIL使得同一时刻只有一个线程在一个cpu上执行字节码,无法多个线程映射到多个cpu上执,这把锁,导致了cpython无法利用多核优势去GIL化引发过激烈的讨论,但前景并不明朗。 备注:去GIL解释器pypy如何查看字节码,如下:import disd...原创 2018-05-25 10:43:00 · 190 阅读 · 0 评论 -
11-9 多线程和多进程对比
对于耗cpu的操作,用多进程编程, 对于IO操作来说,使用多线程编程,进程切换代价要高于线程对于耗费cpu的操作,多进程优于多线程,见下例def fib(n): if n<=2: return 1 return fib(n-1)+fib(n-2)if __name__ == "__main__": with ThreadPoolExe...原创 2018-05-30 16:04:29 · 236 阅读 · 0 评论 -
5-4 实现可切片的对象
list序列的切片说明:#模式[start:end:step]""" 其中,第一个数字start表示切片开始位置,默认为0; 第二个数字end表示切片截止(但不包含)位置(默认为列表长度); 第三个数字step表示切片的步长(默认为1)。 当start为0时可以省略,当end为列表长度时可以省略, 当step为1时可以省略,并且省略步长时可以同时省略最...原创 2018-05-14 17:48:30 · 414 阅读 · 0 评论 -
3-1 什么是魔法函数/3-2Python数据模型对Python的影响
魔法函数:可以给你的类增加魔力的特殊方法 一般满足两个条件: 1.双下划线开头,双下划线结尾:比如__init__, __str__等 2.定制类的特性原创 2018-05-09 13:05:17 · 295 阅读 · 0 评论 -
4.1 鸭子类型和多态
慕课网课程:Python高级编程和异步IO并发编程C++中如何实现多态:class Mammal{public: virtual void Speak() const {std::cout<<"Mammal speak!";}}class Dog:public Mammal{public: void Speak() const {std::cout...原创 2018-05-09 16:27:44 · 623 阅读 · 0 评论 -
4-4 instance和type的区别
class A: passclass B(A): passb=B()#isinstance判断对象b是不是B的实例print(isinstance(b, B)) # True#isinstance判断对象b是不是A的实例print(isinstance(b, A)) # True#type判断b的类型是不是Bprint(typ...原创 2018-05-09 22:20:32 · 729 阅读 · 0 评论 -
4-5 类变量和实例变量
class A: aa=1 # 类变量 def __init__(self, x, y): self.x=x #实例变量 self.y=y #实例变量a=A(2,3)print(a.x, a.y, a.aa) #2,3,1属性查找顺序1.对象属性2.类属性现在来修改aa的值a=A(2,3)A.aa=11a.aa...原创 2018-05-09 22:38:00 · 152 阅读 · 0 评论 -
4-4 isinstance和type的区别
慕课网课程:Python高级编程和异步IO并发编程原创 2018-05-10 15:35:51 · 145 阅读 · 0 评论 -
4-6 类和实例属性的查找顺序----mro查找
慕课网课程:Python高级编程和异步IO并发编程mro:Method Resolution Order 自从Python2.3后使用C3 MRO算法,关于C3 MRO算法的详情,参考The Python 2.3 Method Resolution Order那么接下来通过之前的算法来了解一下MRO 深度优先搜索DFS MRO结果 图1: A->B->D-&g...原创 2018-05-10 16:36:32 · 1003 阅读 · 0 评论 -
4-7 类方法、静态方法和实例方法
class Date: #构造函数 def __init__(self, year, month, day): self.year = year self.month = month self.day = day def tomorrow(self): self.day += 1 def __str...原创 2018-05-10 20:23:04 · 166 阅读 · 0 评论 -
4-8 数据封装和私有属性
import datetimeclass User: def __init__(self, birthday): self.__birthday = birthday def get_age(self): #返回年龄 return 2018 - self.__birthday.yearif __name__ == "__ma...原创 2018-05-10 22:48:18 · 164 阅读 · 0 评论 -
4-9 Python对象的自省机制
自省是通过一定的机制查询到对象的内部结构 Python中提供了很多的方法来查询对象的内部结构,比如: hasattr:查询对象是否有一个特性的属性 getattr:获取对象的属性 setattr:设置对象的属性 delattr:从一个对象中删除属性举个例子class A(object): def retrieve(self): return "A.re...原创 2018-05-11 09:27:55 · 646 阅读 · 0 评论 -
4-10 super真的是调用父类吗?
class A: def __init__(self): print('A')class B(A): def __init__(self): print('B') super().__init__()抛出两个问题:1.既然我们重写B的构造函数, 为什么还要去调用super?> 因为很多时候我们需要父类定义的函数特性...原创 2018-05-11 09:44:28 · 208 阅读 · 0 评论 -
4-12 python中的with语句/4-13 contextlib简化上下文管理器
类似于try-except-finally, with语句也是用来简化代码的。try-except和try-finally的一种特殊的配合用法是保证共享的资源的唯一分配,并在任务结束的时候释放它。比如文件(数据、日志、数据库等等)、线程资源、简单同步、数据库连接,等等。with语句的目标就是应用在这种场景中# with比try-except-finally代码更加简化# 上下文管理器with...原创 2018-05-14 10:34:15 · 213 阅读 · 0 评论