Python
JieFeiLau
术极,近乎道也。
展开
-
aiohttp 服务端与客户端的使用注意事项
当我们使用get的方法传递参数的时候params = {'key1': 'value1', 'key2': 'value2'}async with session.get('http://httpbin.org/get', params=params) as resp: expect = 'http://httpbin.org/get?key1=value1&key2=value2' assert str(resp.url) ==原创 2021-03-11 11:51:41 · 815 阅读 · 2 评论 -
python 协程详解及I/O多路复用,I/O异步
上文介绍了python网络编程的进程线程,多线程,多进程相关,接下来介绍协程Python由于众所周知的GIL的原因,导致其线程无法发挥多核的并行计算能力(当然,后来有了multiprocessing,可以实现多进程并行)。既然在GIL之下,同一时刻只能有一个线程在运行,那么对于CPU密集的程序来说,线程之间的切换开销就成了拖累,而以I/O为瓶颈的程序正是协程所擅长的:多任务并发(非并行),...原创 2018-08-04 18:24:11 · 12038 阅读 · 0 评论 -
Python 类的内置方法
__getattr__ __setattr__ __delattr____getattribute____getitem__ __setitem__ __delitem____repr__ __str__ __format____str____repr____format____slots____del____call____iter__ __next__...原创 2018-08-09 10:50:03 · 278 阅读 · 0 评论 -
Python metaclass—元类
学懂元类,你只需要知道两句话:道生一,一生二,二生三,三生万物 我是谁?我从哪来里?我要到哪里去?在python世界,拥有一个永恒的道,那就是“type”,请记在脑海中,type就是道。如此广袤无垠的python生态圈,都是由type产生出来的。 道生一,一生二,二生三,三生万物。道 即是 type 一 即是 metaclass(元类,或者叫类生成器) 二 即是 class...原创 2018-08-09 15:10:53 · 247 阅读 · 0 评论 -
python 线程、进程、GIL锁、多线程及异步交互、多进程及进程间通信
在上文中我们学习了线程与进程,那么python中是如何处理的?先看下单进程执行的情况import timedef run(n): print("task ",n ) time.sleep(2)run("t1")run("t2")在上面程序中,简单调用两次run方法,该方法会延时2s,输出结果:输出task t1后隔2s,输出task t2,2s后程序结束...原创 2018-08-01 21:08:23 · 635 阅读 · 0 评论 -
python 协程扩展之greenlet gevent模块
python协程中我们介绍了从yield生成器到协程,通过send()函数可以给yeild发消息,让其知道什么时候执行结束,可以切换任务了。yield可以简单传一个value,如果抛出异常如何处理呢,yield from 结构会在内部自动捕获 StopIteration 异常。对 yield from 结构来说,解释器不仅会捕获 StopIteration 异常,还会把value 属性的值变成...原创 2018-08-06 17:58:27 · 906 阅读 · 0 评论 -
Python 文件读写、序列化
文本文件读写3种方法:第一种方法直接读入file1 = open("test.txt") file2 = open("output.txt","w") while True: line = file1.readline() #这里可以进行逻辑处理 file2.write('"'+line[:s]+'"'+",") if not line:...原创 2018-08-07 09:18:29 · 1547 阅读 · 0 评论 -
Python 字符串操作
1、去空格及特殊符号s = ' abcd efg 'print(s.strip())print(s.lstrip())print(s.rstrip())print(s)2、复制字符串#strcpy(sStr1,sStr2)sStr1 = 'strcpy'sStr2 = sStr1sStr1 = 'strcpy2'3、连接字符串print('abc_' + 'def...原创 2018-08-02 19:24:51 · 548 阅读 · 0 评论 -
Python 匿名函数与内置函数
一、匿名函数python 使用 lambda 来创建匿名函数。意即不再使用 def 语句这样标准的形式定义一个函数。 lambda只是一个表达式,函数体比def简单很多。 lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。 lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。 ...原创 2018-08-08 21:07:18 · 264 阅读 · 0 评论 -
如何用pylint提高代码质量
需求背景:Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码。Pylint 是一个 Python 工具,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等。Pylint 的一个很大的好处是它的高可配置性,高可定制性,并且可以很容易...原创 2018-08-27 12:00:03 · 1271 阅读 · 0 评论 -
PEP8
代码布局 缩进 函数参数列表 if 语句条件 集合 制表符 or 空格 行的最大长度 二元运算符 空行 源文件编码 Import 导入 模块级的魔法名称 字符串引号 表达式和语句中的空格 避免使用无关的空格 其他建议 注释 块注释 行内注释 文档字符串 命名规...转载 2018-08-27 12:24:14 · 195 阅读 · 0 评论 -
python读写excel表格(xlrd/xlwt)
最近需要做文本分类,原始数据存放在excel表格中,首先需要将数据预处理,读取出来,然后对特征列中对缺失值置0,有值的为1作为label训练分类器,作为主要记录使用过程的常见问题及解决。 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。可从这里下载https://pypi.python.org/pypi。下面分别记录pyth...原创 2018-12-29 10:44:21 · 434 阅读 · 0 评论 -
python中dict操作集合
字典是Python是字典中唯一的键-值类型,是Python中非常重要的数据结构,因其用哈希的方式存储数据,其复杂度为O(1),速度非常快。下面列出字典的常用的用途.一、字典中常见方法列表复制代码代码如下:#方法 #描述 --------------------------------------------------...原创 2019-01-23 16:58:16 · 1769 阅读 · 0 评论 -
Python paramiko 模块详解与SSH主要功能模拟
我们知道,通过SSH服务可以远程连接到Linux服务器,查看上面的日志状态,批量配置远程服务器,文件上传,文件下载等,Python的paramiko模块同样实现了这一功能。首先我们需要安装这一模块,pycharm环境中如下操作一,安装paramiko模块PyCharm→Preferences→Project:项目名→Project Interpreter点击箭头所指加号,在搜索...原创 2018-07-25 17:32:13 · 52721 阅读 · 10 评论 -
Python Socket编程
一、引子先大概浏览一下网络模型网络模型一般是指 OSI 七层参考模型和 TCP/IP 五层参考模型。 每一层实现各自的功能和协议,并且都为上一层提供业务功能。为了提供这种业务功能,下一层将上一层中的数据并入到本层的数据域中,然后通过加入报头或报尾来实现该层业务功能,该过程叫做数据封装。用户的数据要经过一次次包装,最后转化成可以在网络上传输的信号,发送到网络上。当到达目标...原创 2018-07-19 16:33:19 · 265 阅读 · 0 评论 -
Python 反射机制解析
一、从模块导入讲起通过import模块,我们可以引用其他文件中定义的方法,变量.test.pydef f1(): print('f1')def f2(): print('f2')def f3(): print('f3')def f4(): print('f4')a = 1import test as ssss.f1()ss.f2...原创 2018-07-18 16:40:35 · 3848 阅读 · 0 评论 -
PyCharm中导入第三方包
背景:除了基本的python操作,当我们需要导入第三方包的时候,如何导入进PyCharm操作:1,当 mac pycharm需要导入模块时候,2,PyCharm→Preferences→Project:项目名→Project Interpreter3,在左下角有个加号 ➕,点击,然后查找需要添加的包,当然还有一种更方便的方法,需要你预装anconda1,点击--show all ,点击➕2,添加一...原创 2018-05-23 19:26:14 · 93299 阅读 · 8 评论 -
windows下PyCharm安装及使用
一、首先安装pycharm,可以参考这篇文章:http://www.jianshu.com/p/042324342bf4推荐安装python3.6+系列,可以直接安装,安装完成后已经不需要配置环境变量等,在终端输入python会显示版本信息,也可同时在同一机器安装python2.X系列,只需要将python2.X文件夹中python.exe修改为python2.exe,此时在cmd中输入pyt...原创 2018-06-04 14:33:26 · 2175 阅读 · 0 评论 -
Python 软件目录结构
1,为什么要设计好目录结构?为了规范化能更好的控制程序结构,让程序具有更高的可读性。"项目目录结构"其实也是属于"可读性和可维护性"的范畴,我们设计一个层次清晰的目录结构,就是为了达到以下两点:可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。可维护性高: 定义好组织规则后,维护者就能很明确地知道,新...原创 2018-06-11 19:44:17 · 238 阅读 · 0 评论 -
Python正则表达式
语法:123456import re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0-9]代表匹配0至9的任意一个数字, 所以这里的意思是对传进来的字符串进行匹配,如果这个字符串的开头第一个字符是数字,就代表匹配上了 m = p.match('14534Abc') #按上面生成的正则对象 去匹配 字符串, 如果能匹配成功,这...原创 2018-06-11 19:51:23 · 1179 阅读 · 0 评论 -
python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
os._exit() 和 sys.exit()os._exit() vs sys.exit() 概述python的程序有两中退出方式:os._exit(), sys.exit()。本文介绍这两种方式的区别和选择。os._exit()会直接将python程序终止,之后的所有代码都不会继续执行。sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那么python解释器将会...原创 2018-05-24 16:16:47 · 6305 阅读 · 0 评论 -
Python 迭代器及生成器 解析
一,前言:在了解迭代器前,先大概梳理一下Python的数据结构中,容器(container)、可迭代对象(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推导式(list,set,dict comprehension)容器(container)容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断...原创 2018-06-06 15:33:20 · 684 阅读 · 0 评论 -
Python-闭包详解
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。特点:1.不修改被装饰函数的调用方式 2.不修改被装饰函数的源代码...原创 2018-06-14 19:39:21 · 285 阅读 · 0 评论 -
Python装饰器解析
一,定义装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。装饰器 = 嵌套函数 + 高阶函数import time...原创 2018-06-14 20:58:17 · 228 阅读 · 0 评论 -
python 模块解析
1定义模块:实现了某个功能的代码集合。 如:os 是系统相关的模块;file是文件操作相关的模块模块分为三种:自定义模块内置模块开源模块自定义模块1、定义模块情景一: 情景二: 情景三: 2、导入模块Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有以下几种方法:1234import modulefrom mod...原创 2018-06-15 17:13:59 · 1047 阅读 · 0 评论 -
Python面向对象详解
一,引子编程范式编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,...原创 2018-06-19 23:09:39 · 572 阅读 · 0 评论 -
Python异常处理
1.异常定义异常即非正常状态,在Python中使用异常对象来表示异常。若程序在编译或运行过程中发生错误,程序的执行过程就会发生改变,抛出异常对象,程序流进入异常处理。如果异常对象没有被处理或捕捉,程序就会执行回溯(Traceback)来终止程序。异常的分类:程序遇到逻辑或算法错误运行过程中计算机错误:内存不够或者io错误2.异常处理的定义python解释器检测到错误,触发异常(也允许程序员自己触发...原创 2018-06-27 14:10:20 · 1691 阅读 · 0 评论 -
Python 面向对象进阶详解
在Python 面向对象详解中我们主要介绍了类,对象,面向对象三大特性如封装,继承,多态本文介绍面向对象的一些高级语法特性 类的成员、成员修饰符、类的特殊成员。一,类的成员类的成员可以分为三大类:字段、方法和属性注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段。而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中...原创 2018-07-04 12:16:09 · 897 阅读 · 0 评论 -
Python 列表深浅复制详解
在列表list中有个 copy() 方法,意思是复制一个相同的列表。例如1 names = ["小明", "小红", "小黑", "小黄", "小白"]2 # 把 names 复制,赋值给 names2 变量3 names2 = names.copy()4 # 分别输出 names names25 print(names)6 print(names2)这时会发现结果是一样的,那么问题来了...原创 2018-05-22 10:52:48 · 210 阅读 · 0 评论