![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
freflying1119
《士兵突击》里的生活哲理: “人不能过得太舒服,太舒服会出问题的!” 送给自己自勉!
展开
-
python 的迭代器/生成器学习总结
python 的迭代器/生成器学习总结(1)最近在看视频学习python,在讲到迭代器和生成器的时候,觉得非常棒,因此总结记录一下,以便于后续理解。迭代器迭代是访问集合元素的一种方式。迭代器是一个能够记住遍历位置的对象。迭代器从集合元素的第一个位置开始访问,直到所有元素被访问完结束。迭代器只能往前,不能后退。 迭代器是用在for循环代码中的。迭代器的实现迭代器必须实现2个方法,一个是__...原创 2019-08-06 20:14:31 · 94 阅读 · 0 评论 -
Python的迭代器和生成器总结(2)
Python的迭代器和生成器总结(2)第一篇中的testB有点偷懒,直接在一个类中同时实现了__iter__和__next__方法。但是听培训老师的意思,常用的方法应该是分2个类来做的。如下面代码所示。后面加注释的地方,都是需要关注的设计点。import collectionsclass ClassMate(object): def __init__(self): ...原创 2019-08-07 14:51:13 · 82 阅读 · 0 评论 -
Python迭代器和生成器(3)
Python迭代器和生成器(3)前面理解了迭代器的要点和实现。从这里来讲我们使用迭代器就仅仅是为了让它在for循环中使用,目前看起来是这样。但实际上,迭代器是为了我们接着来说的生成器。老师举了一个非常浅显易懂的例子来说明迭代器的用法。老师说他一个星期不想下楼吃饭,有2种做法,一是一次买很多馒头,每天吃一个;还有一种是每天吃的时候叫外卖送。如果放在程序中来讲就是一次保存很多数据,以备将来使用;二是...原创 2019-08-07 15:38:50 · 91 阅读 · 0 评论 -
Python的args和kwargs理解
众所周知,python的args是用来接收不定长的参数,而kwargs是用来接收不定长的关键字参数。下面通过实例来看看如何真正的理解这两个的用法。def test2(a, b, *args, **kwargs): print("------test2---------") print(a) print(b) print(args) print(kwarg...原创 2019-08-20 17:45:09 · 467 阅读 · 0 评论 -
Python类中的super方法在多继承中的用法(一个例子看懂super()的使用方法)
Python类中如何调用父类?直接写父类的名字使用不带参数的super()方法使用带参数的super(父类)方法第1种方法比较简单,直接在调用的时候指定父类名称即可。但是这种直接使用的方式会有一个副作用,当存在多重继承的时候,父类的初始化方法会被多次调用。解决方法就是使用不带参数的super方法,该方法会使用一个D3算法,该算法会确保所有类的初始化方法仅仅调用一次。看例子:class...原创 2019-08-20 23:21:19 · 319 阅读 · 0 评论 -
Python GIL(全局解释器锁)
GIL锁是C语言编写的python编译器中遗留的问题。它使得多线程并不能真正的充分利用多核能力。比如,一个线程的死循环例子,2个线程的死循环例子。一个进程死锁的例子:while True: pass两个线程死锁的例子:import threadingdef test(): while True: passt = threading.Thread(...原创 2019-08-18 09:42:08 · 87 阅读 · 0 评论 -
Python的浅拷贝和深拷贝
通过测试,我认为应该这么来理解python的浅拷贝和深拷贝:根据是否创建副本来看是浅拷贝还是深拷贝,而不是看调用的是copy还是deepcopy方法给定变量a,如果对于其赋值,比如a = 【1, 2, 3】或者a = (1, 2, 3),然后再把 a 赋值给另一个变量b, 即 b = a。那么相当于a 和b指向了同一个位置,即不创建副本,也就是浅拷贝;对于可变对象,调用copy和deepco...原创 2019-08-18 11:22:21 · 109 阅读 · 0 评论