![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python积累
HXH.py
敬畏YHH是智慧的开端;认识至圣者便是聪明。
展开
-
网络通信tcp tcp客户端及服务器的python语法实现
tcp传输层协议udp/tcpudp:用户数据报协议(无链接,简单不可靠信息传送,信息可能丢失)tcp:传输控制协议(Transmission Control Protocol)(面向链接/可靠/基于字节流)tcp的可靠传输应答机制超时传输错误校验流量控制和阻塞管理客户端步骤:创建(套接字)->链接(服务器)->收发(消息)->关闭import socket...原创 2019-04-11 16:04:19 · 402 阅读 · 0 评论 -
Python中的with及上下文管理器
with、上下文管理器withwith 一种上下文管理器def m3(): with open("output.txt","r") as f: f.write("python")上下文管理器任何实现了__enter__() 和__exit__()的对象都是上下文管理器上文:正常进行的代码;下文:出现异常或结束/关闭的代码上下文管理器可以用with关键字来保...原创 2019-05-04 14:54:43 · 425 阅读 · 0 评论 -
python中正则表达式的应用大全
正则表达式应用场景处理/判断用户提供的数据爬虫(数据清洗)快速提取数据创建流程导入re模块match方法匹配group提取import re ret = re.match(正则表达式,需要处理的字符串)ret.group()匹配单个字符注:只取一位:\d 一位数字(0-9)[1-36-8] 连续数字 可断开(只有一位 等同于[123678])(并...原创 2019-04-19 20:11:09 · 1414 阅读 · 0 评论 -
python独有的正则表达式应用 re模块的高级用法(search/findall/sub/split的应用)
匹配re模块的高级用法python中特有的正则表达式用法分别是 search、findall、sub和splitsearch 从任意部位开始匹配一次并返回(加^等同于match)search的应用示例:import reret = re.search(r"\d+", "阅读次数为 9999")print(ret.group())结果:9999findall 从任意部位...原创 2019-04-19 20:15:57 · 684 阅读 · 0 评论 -
什么是MySQL数据库及MySQL数据库的安装
MySQL什么是数据库MySQL是关系型数据库数据库的名词:列-字段行-记录主键-唯一能够标记一个字段外键-标记另一数据表的主键数据表-数据行的集合数据库-数据表的集合关系型数据库: 存储中 永久保存非关系型数据库: 内存中 高并发时使用 不需建表建库RDBMS关系型数据库管理系统,利用SQL指令间接操作数据库MySQL的安装及图形化操作MySQL的安装安装服...原创 2019-05-06 09:01:01 · 333 阅读 · 0 评论 -
MySQL中数据的完整性(什么是数据类型和约束)
数据完整性数据类型整数:int , bit(1)小数:decimal字符串:varchar,char日期时间:date,time,detetime枚举类型(enum):enum(‘男’,‘女’,‘中性’) default’男’浮点数(decimal):decimal(5,2)表示共存5位数,小数占两位,例如123.33固定长度字符串(char):char(3),如果填充’ab’时...原创 2019-05-06 09:03:53 · 1373 阅读 · 0 评论 -
Python中闭包的实现及闭包内参数的修改
闭包什么是闭包闭包:外层参数(形参与实参)与内层函数组成的一个整体形式:函数套函数作用:变量和函数组成一个整体,方便多次调用可以往闭包内传递一部分代码(如函数引用)或数据进去,方便使用可以给调用传递代码(运算)和数据(参数),调用格式:闭包的简单模板:def line(k,b): def create_y(x): print(k * x + b) ...原创 2019-05-11 12:35:08 · 1247 阅读 · 0 评论 -
web服务器的WSGI接口 及WSGI的实现流程
WSGIWSGI允许开发者将选择web框架和web服务器分开。可以混合匹配web服务器和web框架,选择一个适合的配对。web服务器必须具备WSGI接口,所有的现代Python Web框架都已具备WSGI接口,它让你不对代码作修改就能使服务器和特点的web框架协同工作。wsgl的实现流程1.浏览器发送请求2.服务器->框架(字典, 函数引用)3.框架调用函数引用(引用服务器的函...原创 2019-05-11 12:35:55 · 459 阅读 · 0 评论 -
Python装饰器的实现 及 多种装饰器的应用
装饰器装饰器的实现装饰器:在不修改源码的情况下,对原函数增添新功能开放封闭原则:规定已经实现的功能代码不允许被修改,但可以被扩展,即可拓展但不可在源码中修改封闭:封闭已实现功能代码块开放:开放对外扩展开发def set_func(func): def call_func(): print("---权限验证1---") print("---权...原创 2019-05-12 20:19:02 · 228 阅读 · 0 评论 -
Python的通用装饰器 实现过程
装饰器装饰器: 在不修改源码的情况下,对原函数增添新功能开放封闭原则:规定已经实现的功能代码不允许被修改,但可以被扩展,即可拓展但不可在源码中修改,封闭即封闭已实现功能代码块,开放即开放对外扩展开发通用装饰器的实现def set_func(func): print("---开始进行装饰---") def call_func(*args,**kwargs): ...原创 2019-05-12 20:29:28 · 233 阅读 · 0 评论 -
Python 类的装饰器的原理实现
装饰器装饰器的出现:由于开放封闭原则的存在,已实现功能的代码不允许修改,于是装饰器的重要性就被凸现出来。注:开放封闭原则即规定已经实现的功能代码不允许被修改,但可以被扩展,也就是说可拓展但不可在源码中修改,封闭即封闭已实现功能代码块,开放即开放对外扩展开发函数的装饰器:在不修改源码的情况下,对原函数增添新功能类的装饰器:Python中类同样有装饰器的用法,其中最常用的装饰器是面向对...原创 2019-05-12 20:46:04 · 274 阅读 · 0 评论 -
Python mini框架-给框架添加路由功能
mini框架加路由框架的回顾URL-统一资源定位符 www.baidu.a/b/c.htmlapplication函数的作用 解耦 框架的入口字典-客户端解析出的资源路径函数引用-传递回header内容路由器回顾数据发给路由器,路由器转发给其他网络,实现连接不同网络请求数据发给框架,框架根据请求类型调用不同的处理函数框架添加路由添加路由的用途:根据请求不同,自动调用不同的功能...原创 2019-05-13 09:22:27 · 232 阅读 · 0 评论 -
Python mini框架-给框架添加数据库操作
框架添加MySQL的增删改查添加操作数据库的功能添加数据库的操作-查:->Python操作数据库->创建连接对象 conn = connect()->创建游标对象 cs = conn.cursor()->执行SQL语句 cs.execute()->得到查询结果 cs.fetchall()->关闭游标对象 cs.close()->关闭连接...原创 2019-05-13 09:38:42 · 490 阅读 · 1 评论 -
Python log日志功能的使用演示
log日志log日志的等级:debug:详细的信息,通常只出现在诊断问题上info:确认一切按预期运行warning:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来发生(例如.磁盘空间低)。这个软件还能按预期工作。error:更严重的问题,软件没能执行一些功能。critical:一个严重的错误,这表明程序本身无法继续运行。log日志的使用显示在终端:imp...原创 2019-05-13 09:40:37 · 1287 阅读 · 0 评论 -
Python--元类的简单应用 创建特定类
元类在Python中元类就是用来创建类的“东西”,Python中的类也是对象。元类就是用来创建这些类(对象)的,元类就是类的类,你可以这样理解为:MyClass = MetaClass() # 使用元类创建出一个对象,这个对象称为“类”my_object = MyClass() # 使用“类”来创建出实例对象元类的应用创建特定类型的类时可用元类(例如.默认实例属性为大写)#-*- c...原创 2019-05-24 11:03:01 · 185 阅读 · 0 评论 -
Python的常用魔法属性大全
魔法属性__doc__ 查看类的描述信息格式:类.__doc ____class__ 显示当前对象的类是谁格式:对象.__class ____module__ 显示当前操作的对象所在的模块格式:对象.__module ____new__ 创建对象时为对象分配空间,在初始化方法__init__之前被调用格式:def __new __ ():__init__ 初始...原创 2019-05-04 14:51:58 · 882 阅读 · 0 评论 -
Python的property属性的使用方法
propertyproperty 属性class 类名: @property def 方法名(silf): return 返回值 对象 = 类() 变量 = 对象.方法名 print(变量)注:只能有一个参数self。注:两个参数则需要传值,但property的调用方法-对象.方法名默认不传值方法当做属性调。注:若使用对象名.方法名()...原创 2019-05-04 14:48:36 · 635 阅读 · 0 评论 -
Python中的菱形继承问题及MRO顺序的应用
多继承的MRO顺序多继承的菱形继承问题格式:父类名.方法名()子类:父类名.父类方法()父类:父类名.父类方法()会导致多继承的菱形继承问题:父类可能被调用两次图示菱形继承问题:菱形继承问题的解决方案:super().父类方法() 保证每个类只调用一次按子类名.__mro __ 的顺序调用继承关系/super方法(mro得到顺序)(C3算法)super(指定类名,self...原创 2019-05-04 14:45:59 · 320 阅读 · 0 评论 -
网络通信tcp tcp下载器案例的python语法实现
TCP协议TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通信需要经过创建连接、数据传送、终止连接三个步骤。类似于日常生活中打电话的场景,需要建立链接,确认发送结果,安全传输。下载案例:客户端import socketdef main(): # 创建套接字 ...原创 2019-04-11 16:07:59 · 181 阅读 · 0 评论 -
python多进程及进程池详解及语法实现
进程程序与进程的区别程序:代码 二进制 exe 静态进程:程序运行后 资源+代码 动态进程的流程:写时拷贝:进程中,子进程修改时拷贝影响的代码资源,不修改时不拷贝仅运行创建进程流程:# 导入进程模块import multiprocessing# 创建一个进程的实力对象P = multiprocessing.Process(target=func_name[,args=(元...原创 2019-04-15 18:17:06 · 424 阅读 · 0 评论 -
多线程--实现多线程版udp聊天器案例
线程线程可以简单理解为同一进程中有多个计数器,每个线程的执行时间不确定,而每个进程的时间片相等,线程是操作系统调度执行的最小单位。多线程版udp聊天器案例案例实现:import socketimport threadingdef send_msg(udp_more_socket,dest_ip,dest_port): """获取键盘数据,并将数据发送给对方""" ...原创 2019-04-12 16:01:48 · 536 阅读 · 0 评论 -
多线程--互斥锁之死锁的演示实例 及死锁的解决方法 添加超时时间
线程线程可以简单理解为同一进程中有多个计数器,每个线程的执行时间不确定,而每个进程的时间片相等,线程是操作系统调度执行的最小单位。死锁在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁,尽管死锁很少发生,但一旦发生就会造成应用的停止响应。死锁的演示死锁实例:import threadingimport time#创建互斥锁,默认是没有上...原创 2019-04-12 17:58:10 · 1161 阅读 · 0 评论 -
斐波那契数列的三种python实现方式-普通版、递归版、迭代器版
斐波那契数列斐波那契数列(Fibonacci sequence)的定义:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…,这个数列从第3项开始,每一项都等于前两项之和。在数学上,斐波纳契数列以如下被以递归的...原创 2019-04-12 18:16:47 · 889 阅读 · 0 评论 -
python多任务 Thread(多线程)的基本使用
Thread创建子线程 多任务管理多任务执行形式:时间片轮转优先级调用CPU状态并行:cpu核心数多于运行程序树并发:轮换进行程序执行 常态# 多任务import threadingimport timedef sing(): for i in range(5): print("正在唱歌...") time.sleep(1)def...原创 2019-04-13 01:34:31 · 332 阅读 · 0 评论 -
python的守护线程(简介、作用及代码实例)
python守护线程简介守护线程的理解:如果当前python线程是守护线程,那么意味着这个线程是“不重要”的,“不重要”意味着如果他的主进程结束了但该守护线程没有运行完,守护进程就会被强制结束。如果线程是非守护线程,那么父进程只有等到守护线程运行完毕后才能结束。在python中,线程通过threadName.setDaemon(True|False)来设置是否为守护线程。守护线程的作用:...原创 2019-04-09 23:16:05 · 11528 阅读 · 0 评论 -
python迭代器(定义、判定、实现及应用实例:斐波那契数列的实现)
迭代器迭代是访问集合元素的⼀种⽅式。迭代器是⼀个可以记住遍历的位置的对象。迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器的作用在原版本基础上快速叠加新功能,仅占用极小空间并生成新数据。迭代器的判定可迭代判断方法:from collections import Iterableisinstance(判断数据类型,Iterable)...原创 2019-04-17 11:30:29 · 169 阅读 · 0 评论 -
python生成器-yield的使用 使用yield实现多任务
⽣成器利⽤迭代器,我们可以在每次迭代获取数据(通过next()⽅法)时按照特定的规律进⾏⽣成。但是我们在实现⼀个迭代器时,关于当前迭代到的状态需要我们⾃⼰记录,进⽽才能根据当前状态⽣成下⼀个数据。为了达到记录当前状态,并配合next()函数进⾏迭代使⽤,我们可以采⽤更简便的语法,即⽣成器(generator)。⽣成器是⼀类特殊的迭代器。yield使⽤了yield关键字的函数不再是函...原创 2019-04-17 11:45:44 · 324 阅读 · 0 评论 -
python协程多任务 gevent详解及语法示例
python协程协程协程是python个中另外⼀种实现多任务的⽅式,只不过⽐线程更⼩占⽤更⼩执⾏单元(理解为需要的资源)。 为啥说它是⼀个执⾏单元,因为它⾃带CPU上下⽂。这样只要在合适的时机, 我们可以把⼀个协程 切换到另⼀个协程。 只要这个过程中保存或恢复 CPU上下⽂那么程序还是可以运⾏的。通俗的理解:在⼀个线程中的某个函数,可以在任何地⽅保存当前函数的⼀些临时变量等信息,然后切换到另...原创 2019-04-17 11:55:17 · 644 阅读 · 0 评论 -
进程、线程、协程的区别总结
进程、线程、协程的区别进程开启任务,线程执行进程,线程延时期间进行协程。线程占用资源小,共享全局变量;进程占用资源多,每个子进程不能copy的多占用一部分资源,但不共享全局变量,利用Queue队列共享变量。线程执行开销小,但不利于资源的管理和保护;而进程正相反。进程是资源分配的单位,真正执行代码的是线程,操作系统真正调度的是线程。进程没有线程效率高,进程占用资源多,线...原创 2019-04-17 12:58:58 · 126 阅读 · 0 评论 -
python协程池详解及多任务协程池下载器语法实现
协程池在python中,当需要创建的⼦协程数量不多时,可以直接利⽤gevent模块中的spawn动态成⽣多个协程,但如果是上百甚⾄上千个⽬标,⼿动的去创建协程的⼯作量巨⼤,此时就可以⽤到gevent模块提供的pool.Pool⽅法。初始化Pool时,可以指定⼀个最⼤协程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建⼀个新的协程⽤来执⾏该请求;但如果池中的协程数已经达到指定的最⼤...原创 2019-04-17 13:56:27 · 2429 阅读 · 0 评论 -
利用epoll 实现HTTP服务器的长链接与非堵塞
epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。epoll原理:内存映射(mma...原创 2019-04-27 13:27:32 · 467 阅读 · 0 评论 -
python中的GIL(全局解释器锁)
GILGIL全称Global Interpreter Lock,是一把全局排他锁,即全局解释器锁。每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。Python中有关GIL的特性:多进程才能真的发挥多并发,而多线程是假并发,若想实现并发推荐使用进程;多线程同时仅有一个在执行,是假并发/假多任务,实际是单任务,这是python解释器的本身原因。GIL遗留原因:...原创 2019-05-03 14:15:25 · 146 阅读 · 0 评论 -
Python--如何利用元类实现ORM
元类实现ORMORM是Django的核心思想,“Object Relational Mapping”,即对象-关系映射,用于简化SQL操作,把数据库的操作封装到类里面,把表名映射成类,把字段映射为属性,把行(数据)映射为实例。class ModelMetaclass(type): def __new__(cls, name, bases, attrs): mapping...原创 2019-05-24 11:05:19 · 230 阅读 · 0 评论