python学习笔记
文章平均质量分 78
本人因公司后续项目需要,开始学习python,建立一个专栏来记录我的学习内容,同时可以帮助到别人。
苝花向暖丨楠枝向寒
本着自己以后复习的目的,写微博。如有问题,望各位指出。
展开
-
python学习笔记(三十九) -- yield from 、asyncio、async/await 、aiohttp
Table of Contents 前言yield fromasyncioasync/await aiohttp前言由于 cpu和 磁盘读写的 效率有很大的差距,往往cpu执行代码,然后遇到需要从磁盘中读写文件的操作,此时主线程会停止运行,等待IO操作完成后再继续进行,这要就导致cpu的利用率非常的低。协程可以实现单线程同时执行多个任务,但是需要自己手动的通过s...原创 2018-09-16 22:07:57 · 2450 阅读 · 1 评论 -
python学习笔记(三十二) -- TCP\IP概念、TCP\UDP编程
Table of Contents TCP\IP概念TCPUDPTCP\IP概念计算机之间通信需要统一通信的标准,才可以通信。就像不同国家的人说不同的语言是无法交流的。TCP\IP协议就是通信的标准。其中IP协议用来发送数据,它将数据划分为多个数据包,然后通过网络进行传输,数据包会经过多个路由器从一台计算机到另外一台计算机,其中路由器来控制每一个数据包传输的线路,所...原创 2018-09-10 22:56:04 · 272 阅读 · 0 评论 -
python学习笔记(三十三) -- 邮件发送
Table of Contents 前言SMPT发送邮件简单案例设置主题、收件人、发件人名称 发送HTML邮件发送附件 以及图片 同时支持HTML和Plain格式加密SMTP前言邮件发送到接收流程: 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- ...原创 2018-09-11 23:13:21 · 1263 阅读 · 0 评论 -
python学习笔记(三十五) -- 连接数据库以及SQLAlchemy入门
Table of Contents 数据库类别python连接数据库python连接sqlitepython连接mysql使用SQLAlchemy简单使用一对多关联数据库类别目前广泛使用的关系数据库有如下几种:付费的商用数据库: Oracle,典型的高富帅; SQL Server,微软自家产品,Windows定制专款; DB2,...原创 2018-09-13 21:24:34 · 1107 阅读 · 0 评论 -
python学习笔记(三十四) -- 邮件接收
邮件接收 思路构造一个邮件对象就是一个Messag对象,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片,要把多个对象组合起来,就用MIMEMultipart对象,而MIMEBase可以表示任何对象。它们的继承关系如下:Message+- MIMEBase +- MIMEMultipart +- MI...原创 2018-09-13 01:41:25 · 1353 阅读 · 0 评论 -
python学习笔记(三十六) -- wsgi接口,flask
Table of Contents 前言WSGIWeb框架 -- flask前言客户端也就是浏览器,输入地址如 www.baidu.com ,然后dns会找到这个域名对应的ip地址,从而向该ip地址的服务器发送请求,服务器接收到请求,根据请求的内容,将页面信息再返回给浏览器,浏览器再解析内容最终暂时给用户。如果我们想独自完成整个流程的处理是非常麻烦的,比如 当你输入一个...原创 2018-09-15 23:45:03 · 1638 阅读 · 0 评论 -
python学习笔记(三十七) -- 使用模板、重定向和转发
Table of Contents 前言使用模板重定向和转发题外话前言上篇文章也说过了,在python中写前端代码肯定是不合适的,一是前后端耦合,二是在后端中写前端也没有代码提示是非常痛苦的。所以一般情况,页面都是预先写好的,页面中有一些类似{{name}}的占位符,我们从后端传递到前端,就可以将这些占位符替换成我们想要的值。这整个过程就被称为 MVC,M代表从后端...原创 2018-09-16 13:56:18 · 657 阅读 · 0 评论 -
python学习笔记(三十八) -- send函数、close函数与yield关键字实现协程操作
前言我们之前接触过多线程和多进程,他们可以完成两个甚至多个线程或进程通知执行不同得函数,并且可以通过函数来控制让其中一个线程等待另一个线程执行一部分代码以后再去执行,比如有两个A和B,线程1 执行一部分A,然后停止执行,等待线程2执行一部分B,然后线程2停止执行,再等待线程1执行A,执行完以后线程2再执行函数B体现如下:def A(): print('1') prin...原创 2018-09-16 15:50:22 · 2302 阅读 · 1 评论 -
Python学习笔记补充
Python新式类和经典类的区别 点击进入原文Python中 is 和 == 的区别 点击进入原文Python中 logging 模块的使用 点击进入原文Python中导入模块方式 点击进入原文Python中的单元测试框架unittest 点击进入原文关于Big Endian 和 Little Endian 点击进入原文Fiddler使用 点击进入原文Python3解...转载 2018-08-19 15:08:45 · 224 阅读 · 0 评论 -
python学习笔记(一) --初识python了解其特点
python特点: 一:脚本解释性语言脚本解释性语言的内部机制在运行脚本之前,得到结果之后1.python先将脚本编译成字节码文件(pyc,pyo)2.python虚拟机解释并运行字节码文件 编译型语言的内部机制(C语言)1.先将源代码编译成机器码(机器能读懂的代码),生成可执行文件2.运行可执行文件编译型语言要比脚本解释性语言快的多 二:动态...原创 2018-08-04 00:14:27 · 293 阅读 · 0 评论 -
python学习笔记(二) --数据类型以及编码问题
常用基本数据类型int 整型boolean 布尔string 字符串list 列表tuple 元组数据类型是否可变首先要说明,类似于 a = [1,2,3] a=[1,2,3,4] 这种都不叫改变其中数据,这叫 给变量a,重新引用另外一个对象,我们必须通过python提供的api才可以对这个对象做修改不可变数据类型 int,string,tuple...原创 2018-08-08 22:14:54 · 307 阅读 · 0 评论 -
python学习笔记(三) -- 方法的参数
方法的参数位置参数、默认参数、可变参数、键字参数、命名关键字参数位置参数就是最普通的def func(a,b)默认参数就是 如果你调用这个方法的时候没有提供这个参数,那么会用它的默认值def func(a,b,c=0) 调用 func(1,2)调用的时候只传递了2个参数,被 a和b对应了,c没有传值,就按0来算如果有两个默认参数def func...原创 2018-08-08 22:41:27 · 268 阅读 · 0 评论 -
python学习笔记(四) -- 切片、迭代、递归、尾递归
递归def fact(n): if n==1: return 1 return n * fact(n - 1)上面就是一个简单的递归案例,但是这种写法性能很低。有一种优于上面的写法,叫做尾递归。说白了,就是return的时候 不进行数学运算,仅仅调用自身的函数,就如上面的案例n * fact(n - 1) ,在fact(n-1)返回结果之前,n这个...原创 2018-08-09 22:54:53 · 301 阅读 · 0 评论 -
python学习笔记(五)--列表生成式、生成器(generator)、yield关键字
列表生成式能够快速的生成一个list配合 for 循环使用,for 循环 遍历出的结果 无需像如下方式生成>>> for x in range(1,11): Li.append(x) >>> Li[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]而是用列表生成式让这个操作变得更为便捷>>> [x f...原创 2018-08-10 15:56:17 · 1135 阅读 · 0 评论 -
python学习笔记(六) -- Iterator和Iterable
通过 isinstance可以查看对象的类型>>> from collections import Iterable>>> from collections import Iterator>>> isinstance("123",Iterable)True>>> isinstance([1,2,3],Iter原创 2018-08-13 09:48:36 · 320 阅读 · 0 评论 -
python学习笔记(七) --高阶函数 以及 函数中改变全局变量注意事项
Table of Contents map()函数reduce()函数函数中改变全局变量注意事项filter函数sorted 函数sorted 和 sort的区别map()函数map需要2个或2个以上的参数map函数的第一个参数:要调用的方法名,注意方法名后面不需要加 小括号map函数后面的参数:调用参数一的方法时需要传入的参数,这个参数必须是可以被fo...原创 2018-08-13 22:52:00 · 2863 阅读 · 0 评论 -
python学习笔记(八) --闭包、匿名函数、装饰器、偏函数
闭包函数里面包含函数,外层函数返回内层函数,调用外层函数的时候并不会执行内层函数,而是返回内层函数,当我们需要的时候再去调用。如下所示:>>> def outer(*arg): def inner(): for n in arg: print (n) return inner>>> f = outer(1,2,3,4)>&g...原创 2018-08-14 23:31:05 · 306 阅读 · 0 评论 -
python学习笔记(九) -- 类、实例、私有属性
如果接触过java这块非常容易理解 类 -- 对事物或生物的抽象是一个模板类里面有属性,有方法,打个比方。类代表人类,类里面的属性就好比人的五官,四肢,就是每个人都会有,方法就好比人的动作,比如吃饭,喝水。但是为什么说类是一个模板的,因为人有一些共有的东西,就像上面说的,但是每个人又不一样,比如人的模样,身材,吃的多少等等。实例 -- 通过类可以创建实例通过一个类可以创建出...原创 2018-08-15 21:10:01 · 285 阅读 · 0 评论 -
python学习笔记(十) -- 继承、方法的重写、多态
继承假设有一个类People里面有 eat()、sleep()、work() 这三个函数现在又定义一个类Bob 我们让Bob去继承People这个类,我们在Bob这个类中不去定义任何函数,然我们任然可以通过Bob的实例去调用eat()、sleep()、work() 这三个函数。其中Bob称为子类,People称为父类。如果我们这时通过 isinstance函数来判断会发现,Bob既是B...原创 2018-08-15 22:07:12 · 531 阅读 · 0 评论 -
python学习笔记(十一) -- 实例属性和类属性、__init__(构造方法)、MethodType函数 与 java对比分析
实例属性 -- java中的全局变量实例属性是给一个类的实例绑定一个属性其中__init__方法对应的就是java中的有参构造函数,其中的第一个参数是固定的,必须为self,只当前实例本身,对应java中的this,在__init__方法中我们可以给实例绑定属性。即java中的有参构造函数对全局变量赋初始值。我们通过 People(fit) 就可以创建一个实例,通过实例.fit 就...原创 2018-08-16 14:52:31 · 928 阅读 · 2 评论 -
python学习笔记(十二) -- __slots__ ,__dict__
__dict__python中默认情况下,每一个类都会有 __dict__这个属性,我们可以通过dir 来查看类结构>>> class T(object): pass>>> dir(T)['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__form...原创 2018-08-16 21:56:31 · 691 阅读 · 0 评论 -
python学习笔记(十三) -- 多重继承和MixIn,以及@property的使用
多重继承一个类继承好几个类下面 类C 继承A又继承B >>> class A(object): name = 'zzh'>>> class B(): age = 22 >>> class C(A,B): pass >>> C.age22>>> C.name'zzh'原创 2018-08-17 20:02:07 · 427 阅读 · 0 评论 -
python学习笔记(十四) --定制类之 __str__,__repr__,__iter__,__getitem__,__getattr__,__call__
__str__ --类似于java中的toString()我们print(对象名) 会输出对象属于哪个类,以及该对象在内存中的地址。那如果我们想print(对象名)输出的是该对象的属性名以及属性值该怎么做?我们可以重写__str__方法,就像java中一样,如果我们自定义一个类,我们需要重写toString()方法,才能在system.out.println该类对象的时候,打印出我们...原创 2018-08-19 17:34:45 · 1128 阅读 · 0 评论 -
python学习笔记(十五) -- 枚举
枚举枚举的作用就是定义一组 数据形式为 dict 但却又不可变的常量比如我们定义一个类,或者定义一个dict ,类中的成员变量可以被更改,而且类又可以被实例化,dict 里面的值也可以被更改。如下:WEEKDAY = { 'MON': 1, 'TUS': 2, 'WEN': 3, 'THU': 4, 'FRI': 5}class Col...原创 2018-08-19 21:40:56 · 628 阅读 · 0 评论 -
python学习笔记(十六) -- 使用type创建类对象、元类、ORM简单实现 详解
Table of Contentstype元类 -- metaclass使用场景代码部分我们最后再来梳理一下执行过程在python中,一切皆是对象,我们通过类可以创建出来对象,但是类本身也是对象,我们可以通过type方法查看一个对象是被哪个类所创建的,如下>>> class Student(object): pass>>>...原创 2018-08-23 00:18:21 · 1354 阅读 · 0 评论 -
python学习笔记(十七) -- 异常
Table of Contents 异常一:为什么会出现异常1:造成代码冗余2:无法知道详细的错误信息二:抛出异常1:异常的本质2:自定义异常三:捕获异常1:作用2:使用3:向上抛出异常四:python中内置异常的使用五:使用except注意事项 异常一:为什么会出现异常1:造成代码冗余我们下看下面的代码>>...原创 2018-08-24 00:43:46 · 310 阅读 · 0 评论 -
python学习笔记(十八) --调试(print、assert、logging、pdb)
一:print代码运行出错,我们可以使用print输出语句来查看变量的值,从而找到问题点,但这种方式比较麻烦,我们或许需要在多个地方加上print语句才能准确的找出问题所在。并且当我们改正错误以后还需要将print删除,否则影响代码的美观。二:assert 断言凡是调试时用到print的地方我们都可以换成 assert如下def foo(s): n = int(s)...原创 2018-08-24 21:43:33 · 1769 阅读 · 0 评论 -
python学习笔记(十九) -- 单元测试和文档测试
Table of Contents 测试的使用场景单元测试文档测试测试的使用场景我们写一套代码想要提供某些功能,写完了以后我们需要对其进行测试,我们将这些测试的代码写在一个或多个模块中,只要一执行,就能判断代码是否有问题。说白了就是 用一些代码去测试一些功能,更改代码以后这个测试代码以后还能使用,或许会需要少量的修改。单元测试先说一下单元测试涉及的几个对象。Te...原创 2018-08-26 15:39:08 · 3246 阅读 · 0 评论 -
python学习笔记(二十) -- with的使用
Table of Contentswith的使用with的使用场景网上看了很多说一堆理论的,我直接告诉你怎么使用。with的使用>>> class Sample: def __enter__(self): return self def __exit__(self,type,value,trace): print("type:",type) ...原创 2018-08-28 22:20:15 · 480 阅读 · 0 评论 -
python学习笔记(二十一) -- IO流之文本读写、StringIO和BytesIO
目录文本读写open函数read() 和 write()read(size)、readline()、readlines()seek() 和 tell()二进制文件字符编码with与open结合使用StringIOAPI简单使用BytesIO 文本读写open函数通过 open 函数我们可以对一个文件 进行读写操作,简单的使用o...原创 2018-08-28 22:25:27 · 2701 阅读 · 1 评论 -
python学习笔记(二十二) -- 操作文件和目录、序列化
Table of Contents 前言创建、删除目录创建、删除一层目录获取当前目录创建、删除多层目录重命名文件、文件夹os.path 模块序列化序列化为bytes序列化为json前言 操作文件和目录的函数基本上都在 os 和 os.path 这两个模块中os 模块中包含文件夹的创建、删除,对文件的删除(文件的创建通过之前说过的open函数)...原创 2018-08-31 09:02:12 · 307 阅读 · 0 评论 -
python学习笔记(二十三) -- 多进程和多线程
目录多线程多进程的意义多进程的使用方式一(fork): 只能在Unix/Linux/Mac系统下执行,windows不可以方式二(multiprocessing.Process): 全平台通用方式三(Pool): 同时创建多个子进程方式四(subprocess模块):进程间的通信 --Queue多线程简单使用注意事项Lockpython其实不存在多...原创 2018-09-02 18:18:49 · 1375 阅读 · 0 评论 -
python学习笔记(二十四) -- 分布式进程
目录 概念实现注意概念我前一个文章所讲的多线程和多进程都是在一台计算机上实现将一个工作分为多个小工作,使得多个cpu可以同时参与到工作当中,从而提高工作效率,以及提高对CPU的利用率。但有时候一台计算机无法负担全部的工作量,我们就需要将工作分配给两台甚至多台计算机,其中一台计算机用来发布任务,其他的计算机接收任务执行并返回结果。多进程程序在同一台机器上运行我们通过Q...原创 2018-09-03 14:36:48 · 282 阅读 · 0 评论 -
python学习笔记(二十五) -- 正则表达式
Table of Contentsre模块精准匹配更精准的匹配正则表达式与split配合使用分组贪婪匹配re模块 python通过re模块来实现正则表达式与字符串的匹配。re的match函数需要两个参数,参数一正则表达式、参数二被匹配的字符串。如下:>>> re.match('\d','12345') # 匹配成功返回matc...原创 2018-09-03 22:47:22 · 460 阅读 · 0 评论 -
python学习笔记(二十六) -- 常用内建模块(一)datetime、collections、struct
目录 datetimedatetime、timestamp相互转换datetime、str相互转换datetime加减 datetime时区,以及时区运算collectionsnamedtuple -- 优化tupledeque -- 优化listdefaultdict -- 优化dictOrderedDict -- 优化dict...原创 2018-09-04 23:55:40 · 396 阅读 · 0 评论 -
python学习笔记(二十七) -- 常用内建模块(二) Base64、MD5、SHA1、hmac
目录 base64 hashlibMD5 SHA1hmacbase64原理base64就是对二进制数据进行编码,比如我有6字节的二进制数据,然后每3个字节分为一组,也就是一组有3*8 = 24bit(1个字节由8位二进制数组成) ,然后把这个 24bit 分为4组,也就是每一组有6个bit。其实说白了base64就是将二进制数据每6个bit分为一组,6个b...原创 2018-09-05 20:07:09 · 2283 阅读 · 1 评论 -
python学习笔记(二十八) -- 常用内建模块(三) itertools、contextlib、urllib
Table of Contents itertoolsitertools.count() -- 生成一个 无限大的数据流itertools.cycle() -- 生成一个 无限大的数据流,数据来源为参数中的可迭代元素itertools.repeat() -- 生成一个 有限的数据流,参数指定循环内容以及次数itertools.takewhile() -- 截取一个Itera...原创 2018-09-06 23:53:05 · 500 阅读 · 0 评论 -
python学习笔记(二十九) -- 常用内建模块(四) xml、HTMLParser
目录 XMLSAXElementTreeHTMLParserXML常见的三种解析方式DOM、SAX、ElementTreeDOM会把整个XML读入内存,解析为树,因此占用内存大,解析慢,优点是可以任意遍历树的节点。SAX是流模式,边读边解析,占用内存小,解析快,缺点是我们需要自己处理事件。ElementTree模块提供了一个轻量级、Pythonic的API,...原创 2018-09-07 16:48:47 · 396 阅读 · 0 评论 -
python学习笔记(三十) -- 安装Anaconda以及使用第三方模块Pillow、requests、chardet、psutil
Table of Contents 前言Pillow更改图片长宽以及加模糊滤镜 绘制验证码requestsget请求Post请求爬取图片的一个小案例chardetpsutil前言我们通过pip命令可以下载所需要的模块,但是一个一个下载非常麻烦。推荐使用Anaconda,Anaconda的使用教程以及安装教程请阅读下面的文章写的非常详细。这里可...原创 2018-09-09 22:52:34 · 21815 阅读 · 6 评论 -
python学习笔记(三十一) -- virtualenv、图形界面
目录 virtualenv图形界面virtualenvvirtualenv与Anacodna 类似,用来管理环境关于virtualenv的安装以及使用看下面这两个文章足以,分别有linux和windows的安装步骤https://www.jianshu.com/p/ab93973286cchttp://www.tendcode.com/article/virtual...原创 2018-09-10 10:58:33 · 251 阅读 · 0 评论