06 2019 档案
摘要:描述符(descriptor)是实现了 、`__set__ __del__`方法的类,进一步可以细分为两类: 数据描述符:实现了 和`__set__` 非数据描述符:没有实现 描述符在类的属性调用中起着很重要的作用,类在调用属性时,遵守两个规则: 按照实例属性、类属性的顺序选择属性,即实例属性优先于
阅读全文
摘要:问题: 使用matplotlib的pyplot.savefig保存图片时,前面的图会不断叠加到后面的图中。 原因: savefig方法保存图片并不会重置画布,所以导致图片的相互叠加。 解决方法: 保存图片后,使用plt.clf()重置画布。
阅读全文
摘要:python3.6+版本中,dict的键值保持插入有序。 输出结果
阅读全文
摘要:本文为is同一性运算符的详细解释。is用于判断两个对象是否为同一个对象,具体来说是两个对象在内存中的位置是否相同。 python为了提高效率,节省内存,在实现上大量使用了缓冲池技术和字符串intern技术。 整数和字符串是不可变对象,也就意味着可以用来共享,如100个“python”字串变量可以共享
阅读全文
摘要:Python的dict由hash实现,解决hash冲突的方法是二次探查法。hash值相同的元素会形成链表。所以dict在查找key时,首先获取hash值,直接得到链表的表头;而后在链表中查找等于key的值。 所以要使一个对象的实例能够作为dict的key值,一般需要实现__hash__和__eq__
阅读全文
摘要:lambda用于创建匿名函数,下面两种函数定义方式等价。 立刻执行的匿名函数 输出结果 匿名函数实现闭包 输出结果
阅读全文
摘要:在作用域与名字空间提到,python是静态作用域,变量定义的位置决定了变量作用的范围。变量沿着local,global,builtins的路径搜索,直觉上就是从里到外搜索变量,这称为最内嵌套作用域规则。 从里到外的搜索 输出结果 最内嵌套作用域规则有一个神奇的特性,它对local变量的搜索只依赖于静
阅读全文
摘要:for循环 在上述for循环中,不断地将s中的值赋值给i,然后打印出来。这种只针对s中元素的循环称为对s的迭代,能够迭代的s称为可迭代的。 python为了实现for循环,需要迭代的对象实现迭代协议或序列协议,以获取一个迭代器。下面只讨论迭代协议,即实现一个预定义的方法: for在对对象进行迭代时,
阅读全文
摘要:实例通常能够调用类的属性,但是有些属性是类专有的,实例无法调用。 实例调用方法时查找属性时,首先在自己的__dict__中找,找不到去类中找,在类中能够找到的属性都位于dir(cls)中,如果类的某些属性不在dir(cls)中,那么实例无法访问。
阅读全文
摘要:Python具有静态作用域,变量的作用域由它定义的位置决定,而与调用的位置无关。 第一行的a的作用域是全局作用域,作用于定义位置后面的所有位置。 第四行的a的作用域是局部作用域,作用于f函数里。 Python能够形成局部作用域的只有函数与类,其他语句不形成局部作用域。 函数与类的局部作用域 输出结果
阅读全文
摘要:使用实例引用类的属性时,会发生动态绑定。即python会在实例每次引用类属性时,将对应的类属性绑定到实例上。 动态绑定的例子: 输出结果: 从上述代码中可以看到,类方法的变化是实时影响实例对方法的调用的,这说明python是在实例调用方法的过程中动态地查找类方法。 动态绑定的代价: 上图两个循环中,
阅读全文
摘要:类属性只有类及其实例能够访问,可以理解为一个独立的命名空间。 Python中类属性的引用方式有两种: 1. 通过类的实例进行属性引用,称为绑定方法(bound method),可以理解为方法与实例绑定在一起。 2. 通过类进行属性引用,称为非绑定方法(unbound method),方法没有与实例绑
阅读全文
摘要:实例是具象化的类,它可以作为类访问所有静态绑定到类上的属性,包括类变量与方法,也可以作为实例访问动态绑定到实例上的属性。 实例1: 输出结果: test1中演示了实例对类变量的访问与修改,从输出结果可以看到,类变量work和kind的列表被修改了,而another的值没有发生变化,说明如果类变量是可
阅读全文
摘要:在Python中,生成器和函数很像,都是在运行的过程中才会去确定各种变量的值,所以在很多情况下,会导致各种各样的问题。 在Python中,生成器和函数很像,都是在运行的过程中才会去确定各种变量的值,所以在很多情况下,会导致各种各样的问题。 输出结果为: 输出结果为: 上述代码中,x_filter是基
阅读全文
摘要:is用来判断两个对象是不是同一个对象,通过id()函数取对象地址进行判断。python会缓存一些小的整数,以及只包含字母数字以及下划线的字符串。所以在对于这些值的时候,is判断为True。 is用来判断两个对象是不是同一个对象,通过id()函数取对象地址进行判断。python会缓存一些小的整数,以及
阅读全文
摘要:问题:在windows系统中,换行的符号是'\r\n'。python在读文件的时候为了系统兼容,会默认把'\r','n','\r\n'都视作换行。但是在windows文件中,可能在同一行中同时存在'\n','\r\n','\r'。这个时候python的默认行为会将一行拆分成多行输出,影响预期结果。
阅读全文
摘要:在python中,用for对列表进行遍历的时候,迭代器中维护的是列表的索引而不是列表的元素。也就是说,for循环是对索引进行迭代,如果在for循环过程中修改了列表,迭代出来的值是新列表的索引位置,如果索引超过了新列表的范围,循环终止。 在python中,用for对列表进行遍历的时候,迭代器中维护的是
阅读全文
摘要:2020-10-19更新:鼠绘网已关闭。 简介 scrapy是基于python的爬虫框架,易于学习与使用。本篇文章主要介绍如何使用scrapy爬取鼠绘漫画网海贼王最新一集的漫画。 源码参见:https://github.com/luoheng23/projects/tree/master/scrap
阅读全文

浙公网安备 33010602011771号