python高级
文章平均质量分 52
fanlei5458
这个作者很懒,什么都没留下…
展开
-
大多数人不知道的try..except...finally中的陷阱!!
异常丢失:请先看看下面的代码:def fun(): try: print('try--start') a = 1/0 except ValueError as ret: print(ret) finally: return 'finally'print(fun())执行的结果:try--startfin...原创 2018-04-22 07:31:53 · 1812 阅读 · 2 评论 -
python中生成器和迭代器以及可迭代对象的区别
先简单的总结一下三种之间的关系: 生成器和迭代器都是可迭代对象, 而生成器是一类特殊的迭代器.对于生成器和迭代器我们都可以使用next()函数来获取其下一个返回值,当然也可以使用for...in...来获取他们的返回值,因为for...in...的本质其实就是不断的对对象不断的调用next()方法,关于for...in...的本质可在for...in...内部实现原理中查看.然后在进行分别说...原创 2018-04-28 22:02:22 · 578 阅读 · 0 评论 -
关于多线程对于全局变量的资源竞争问题
python中多线程共享全局变量的优缺点 优点:在一个进程内的所有线程共享全局变量,很方便在多个线程间共享数据 缺点:线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全)下面就是一个资源竞争,全局变量混乱的例子 代码中两个线程同时对全局变量num进行了加1000000次1的操作,可结果却并非为20000000from threading import Thr...原创 2018-04-21 13:51:37 · 1938 阅读 · 0 评论 -
进程之间使用队列Queue()通信
多进程之间通信可以使用multiprocessing中的Queue()来完成,下面简单介绍一下Queue()里面的函数及功能初始化Queue()对象时(例如:q=Queue()),若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接受的消息数量没有上限(直到内存的尽头);Queue.qsize():返回当前队列包含的消息数量;Queue.empty():如果队列为空,返回True,...原创 2018-04-25 08:27:47 · 1109 阅读 · 0 评论 -
python 默认参数使用的注意事项
请先看下面的代码import timedef fun(t = time.time()): print(t)fun()fun()以下是输出结果1525179319.46583681525179319.4658368我们所期望的是当我们多次掉用fun()的时候能够打印出不同的时间,可是实际的情况却是每次所打印的值都是一样的.在看下面的例子...原创 2018-05-01 21:25:01 · 524 阅读 · 0 评论 -
python中for...in...的内部实现原理
for循环遍历其实就是取出可迭代对象中的迭代器然后对迭代器不断的间隙next()操作,再处理掉最后一次对迭代器next()时抛出的异常.下面我们使用一个while模拟了for...in...的实现lists = [i * 2 for i in range(5)]for temp in lists: print(temp, end='')print('\r\n下面是使用while模拟f...原创 2018-04-20 08:44:54 · 6096 阅读 · 0 评论 -
python中的多态
面向对象有封装,继承,多态三大特性,我们在这里主要介绍python中的多态.多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编...原创 2018-04-19 23:35:21 · 1742 阅读 · 0 评论 -
深拷贝和浅拷贝
深拷贝: 对一个对象所有的层次递归的拷贝,深拷贝可以通过copy.deepcopy()来实现浅拷贝: 只对一个对象的顶层进行了拷贝,浅拷贝可以通过copy.copy()来实现请看下面浅拷贝的示例: c列表里面嵌套了两个列表a和b,然后对c进行浅拷贝并赋值给d, 然后查看c和d的id我们可以发现他们的id并不一样,说明浅拷贝对对象c的顶层完成了拷贝,接下来又分别查看了列表c中的a和...原创 2018-04-24 08:05:02 · 1221 阅读 · 0 评论 -
关于with和上下文管理器的执行过程和原理
with的作用 说通俗易懂一点就是当with语句执行完之后,with会自动帮我们关闭或断开对象所占用的系统资源.实现了上下文管理协议的对象都可以被with作用.下面是最简单的一个关于with的使用def fun(): with open("output.txt", "w") as f: f.write("Python之禅")open 方法的返回值赋值给变量 f,当离...原创 2018-04-23 17:05:06 · 869 阅读 · 0 评论 -
python中统计计数的几种方法和Counter的介绍
1) 使用字典dict()循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1.lists = ['a','a','b',5,6,7,5] count_dict = dict() for item in lists: if item in count_dic...原创 2018-04-30 10:07:53 · 27511 阅读 · 2 评论 -
python中的__solots__方法
__slots__可以用来限制实例对象所能添加的属性.当添加的属性不在__slots__的声明里面就会抛出AttributeError异常.>>> class Person(object):__slots__ = ("name", "age")>>> P = Person()>>> P.name = "Tom"&am原创 2018-04-28 22:09:56 · 617 阅读 · 0 评论