python
python一些知识
kaijia323
现在已经不做爬虫了,现在做前端,之前的文章代码现在已经忘记了,所以之前的代码问题请自行百度吧
展开
-
python学习——闭包与装饰器
一、闭包我个人理解的闭包,前提要有两个函数,而且这两个函数是嵌套关系,框架如下:def outer(): # 外层函数 name = 'xxx' # 外层函数变量 def inner() # 内层函数 print(name) # 内层函数使用外层函数变量 return inner # 返回内层函数的名字(引用)闭包我也百度了很多教程,也看过很多的视频,但是说的各种各样的也有,我只好按我个人理解的闭包来说。闭包说实在的,就是内层函数使用了外层函数的变量,并且外层函数将内层函数给原创 2020-07-17 23:25:01 · 171 阅读 · 0 评论 -
python学习——yield和yield from
一、先来看看yield返回的是什么东东yield关键字只能在函数中使用,否则会抛出语法异常咱们知道只要在函数中存在yield关键字,那么这个在调用这个函数的时候,其返回值就是一个生成器对象,下图咱们引入from collections.abc import Generator生成器类,判断函数返回的是不是Generator的实例既然知道是Generator,那么要讲Generator就需要再谈谈Iterable可迭代对象和Iterator迭代器先看继承关系,Iterator是继承自Itera原创 2020-07-17 17:40:35 · 892 阅读 · 0 评论 -
python学习——ThreadPoolExecutor(线程池)
一、ThreadPoolExecutor能够让我们更方便的操作多线程导入模块from concurrent.futures import ThreadPoolExecutorsubmit()方法返回的是一个Future类对象cancel()方法,如果能取消掉就取消,取消成功返回Ture;如果正在运行或已经完成,则不能取消cancelled()查看线程是否以及被取消running()查看当前线程是否正在运行done()add_done_callback()当线程结束或被取消时原创 2020-07-16 00:18:24 · 4120 阅读 · 0 评论 -
python学习——threading多线程
一、导入多线程的模块import threading简单的一个线程使用threading.Thread创建一个多线程,Thread是一个类__init__方法def __init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None): pass"""第一个参数:group不用管,如果你传入的参数不是None的话就会报错target:是原创 2020-07-15 17:13:17 · 433 阅读 · 0 评论 -
python学习——多线程之GIL
一、GIL(全局解释器锁)GIL是为了确保在多个线程运行时,同一时刻只有一个线程在cpu上运行,这样做是为了保证在对数据进行操作的时候,能够确保数据的安全。但是即使是有了GIL,数据的安全就能保证了吗,其实不然,要说明这个,就要说说GIL什么时候会释放?咱们知道,python是解释性语言,py代码在运行的之后,会将代码解码成字节码,然后再执行,当字节码到一定行数或者代码运行时间到达一定的时间片或者进行I/O操作的时候,GIL就会释放,然后其他线程争抢这把锁,谁抢到谁就能操作,GIL不会一值锁住只让一个原创 2020-07-15 15:54:14 · 223 阅读 · 0 评论 -
python学习——collections模块之Counter
一、Counter是用来统计个数的下面是用传统方法统计个数,随机生成长度为20的字符串,用defaultdict初始化字典用Counter来统计在实例化的之后直接将待统计的可迭代对象传进去即可,注意是可迭代对象,下图是源码的一些使用方法__init__Counter有6个方法,下面咱们就讲讲这些方法的用法most_commomdef most_common(self, n=None): '''List the n most common elements and原创 2020-07-13 15:00:07 · 784 阅读 · 0 评论 -
python学习——collections模块之namedtuple
一、再介绍namedtuple之前先说一下class类在实例化一个类的时候,咱们可以用.的方式去访问属性而namedtuple就是有这么一个功能,可以让咱们想对象一样使用.的方式去访问属性,下面的代码和上面的代码一样但是通过namedtuple这种方式创建的对象是不能够修改属性的值的,和元组一样下面尝试修改name属性的值,结果抛出AttributeError异常也不能动态的去添加属性,否则也会抛出异常所以在用namedtuple创建类的时候,应该一开始就声明好有哪些属性在实例化的时原创 2020-07-13 00:05:36 · 448 阅读 · 0 评论 -
python学习——collections模块之defaultdict
一、再说defaultdict之前先看一下内置dictdict的方法clear清空字典def clear(self): # real signature unknown; restored from __doc__ """ D.clear() -> None. Remove all items from D. """ passcopy浅拷贝def copy(self): # real signature unknown; restored from __d原创 2020-07-12 18:51:15 · 896 阅读 · 1 评论 -
python学习——collections模块之deque双端队列
一、collections模块介绍colletions是python内置的模块,里面有很多数据类型['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList', 'UserString', 'Counter', 'OrderedDict', 'ChainMap'],这些数据类型让我们内置的list,dict,tuple,set操作更加方便。二、deque(双端队列)# 官方说明* deque list-like cont原创 2020-07-12 16:05:00 · 698 阅读 · 0 评论