Python高级语法
文章平均质量分 67
小柯行色匆匆
这个作者很懒,什么都没留下…
展开
-
Python 进阶
第九章 迭代器和生成器9.1 Python的迭代协议类中实现了__iter__方法,生成的对象,就是可迭代对象,可以使用for循环取值。类中同时实现了__iter__和__next__语法,则生成的对象就是迭代器,可以使用next方法取值。生成器是迭代器的子类,所以说生成器一定是迭代器,同时生成器中还必须实现send和throw两个抽象方法,从abc模块中,我们可以清晰地看到,Iterable,Iterator和Generator的关系。所以自己去读源码往往是最正确而且有效的方式,网上阅读大量的资原创 2021-02-19 19:40:58 · 71 阅读 · 0 评论 -
Python 进阶
第八章 元类编程元类编程用的不多,主要是了解元类编程方便阅读源码。元类是创建类的类,类默认由type创建,但是我们可以通过metaClass参数指定元类,但是元类必须继承type。8.1 property动态属性property一般搭配setter方法使用,类似于Java里面的setter和getter,一般用于访问属性时需要对属性做一些操作,或者间接访问对象的私有属性。下面展示一些 内联代码片。class User: def __init__(self, name, age):原创 2021-02-19 12:58:52 · 91 阅读 · 0 评论 -
Python 进阶
第六章 深入python的set和dict6.1 先来看看collections中的abc首先,从源码中可以看出,set和dict分别是MutableSet和MutableMapping的子类,所以二者都是可变的。MutableSet.register(set)MutableMapping.register(dict)6.2 dict的常见用法setdefault如果dic中key不存在,则插入value,并返回value值,如果key已存在,则不会更新,并返回已插入的value值。原创 2021-02-16 23:07:41 · 123 阅读 · 0 评论 -
Python 进阶
5.1 第五章 自定义序列类5.1.1序列类型的分类容器序列list、tuple、deque扁平序列str、bytes、bytearray、array.array可变序列list, deque,bytearray、array不可变str、tuple、bytes5.2 序列的abc继承关系序列的继承关系在源码中有体现,首先不可变类型为Sequence,可变类型为MutableSequence。这两个类调用了register函数,把其他类变为它的子类。至于arr原创 2021-02-15 16:21:06 · 81 阅读 · 0 评论 -
Python进阶
第四章 深入类和对象4.1 鸭子类型和多态首先介绍一下多态的概念,多态简单来说就是一个对象具有多种状态,例如猫对象可以看作属于猫这个类,也可以看成是一种动物,因为Java是一门强类型语言,所以多态应用场景比较多,例如,定义一个函数时,我们知道传入的对象是一个Animal类型,我们需要调用其对应的方法,这时候参数就必须是Animal类型,而不能是Cat或者Dog类型。而Python中多态的概念是被弱化了的,可以各自对象调用各自的方法即可。class Animal(object): def say原创 2021-02-15 13:42:50 · 161 阅读 · 0 评论 -
Python 进阶
第三章 魔法函数3.1 什么是魔法函数Python内置的以双下划线开头的都是魔法函数(自定义的没有用),众所周知,Python是面向对象编程的语言,面向对象编程的三大特性,封装、继承和多态都体现得很自然,而Python中具有特色的是协议和鸭子类型,Python中只要实现了特定的魔法方法就会有对应的功能,这也是协议和鸭子类型的表现。例如,对一个类实现了__getitem__方法就能将类编程序列,实现了__str__方法打印对象时就会打印出返回值,而Python中另一个特色就是备用机制,这也是我喜欢Pyt原创 2021-02-12 21:56:31 · 213 阅读 · 0 评论 -
Python 进阶
第二章2.1 一切皆对象2.1.1 动态语言和静态语言的区别动态语言(弱类型语言)需要在代码运行时才能确定数据的具体类型,Python就是典型的弱类型语言,编写代码时无需提前声明数据类型,所以编写代码比较方便。静态语言(强类型语言)在变量和函数定义时必须提前声明数据类型,这一类的语言包括Java,C,C++,Scala(Scala数据声明交给IDE去做)等等,静态语言代码运行前就可以知道数据类型,而不用运行时去判断,因此代码执行效率一般比较高,而缺点就是不够灵活,编写代码比较麻烦。类型优势原创 2021-02-12 19:52:20 · 218 阅读 · 0 评论 -
Python 进阶
第一章 序言一开始接触Python会觉得很简单,不就是调库吗?有一次面试一个面试者他也提出同样的看法。难道Python这么火只是因为简单吗?后来我也开始怀疑。在上一次工作期间,我遇到一个问题,当Python调用Nmap对6000个左右IP常见端口进行扫描时,每次扫描完成都需要大约3个小时,而且有时候会出现快扫描完成扫描到某一个IP卡住的情况,因为每一天都需要扫描出来的数据结果,因此,一旦失败3-4次当天的数据结果就会出不来,于是我下定决心要解决这个问题。当时代码是使用进程池编写的,共享变量采用manage原创 2021-02-12 15:00:12 · 138 阅读 · 0 评论