![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python进阶
此时一位小白路过
哦豁一片空白
展开
-
FastDFS - 分布式文件系统,结合nginx在python和Django框架中的应用
定义c语言编写,开源的分布式文件系统充分考虑了冗余备份,负载均衡,线性扩容等机制很容易搭建一套高性能的文件服务器集群提供文件下载和上传服务。组成● Tracker server● Storage server客户端请求向 Tracker server 进行文件的上传和下载,Tracker server 调度后最终由 Storage server 完成文件的下载和上传作用● Tracker server负载均衡和调度,在文件上传时Tracker server 根据一些策略找到Storage原创 2020-12-06 20:02:21 · 285 阅读 · 0 评论 -
Python--Django:关于在设置cookie时出现中文乱码的解决方法
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 195-199: ordinal not in range(256)原创 2020-11-28 18:29:54 · 529 阅读 · 0 评论 -
Python:mini-web 自建web服务器和web框架,实现WSGI协议(含代码实例)
web服务器示意图原创 2020-10-25 17:07:42 · 470 阅读 · 0 评论 -
Python:添加log日志
一.日志级别二.日志输出原创 2020-10-25 10:43:55 · 2671 阅读 · 0 评论 -
Python:装饰器的用法及原理解析
一.什么是装饰器● 在不改变原有函数代码的前提下,为函数增添功能·二. 装饰器的用法● 先定义要为函数增添的功能代码并封装在一个闭包(“闭包”详情见我上一条博客)里,在为要增添功能的函数上加上 @闭包函数名例:# 通用装饰器def set_fun(fun): def call_fun(*args, **kwargs): print("要增添的功能") # 当函数test()有返回值时,这里fun(*args, **kwargs)加return为了接收返回值并返回给call_fun(*原创 2020-10-19 04:05:18 · 2664 阅读 · 2 评论 -
Python:匿名函数,函数,闭包,类的区别
一. 关于匿名函数(lambda)● 匿名函数不必起名● 当定义某个功能只需用到一次,或者想以极简的方式表示● 匿名函数的函数体通常是一个表达式,必须指定一个返回值模板:变量 = lambda 需要传入的所有参数 : return 表达式例:求和函数:sum = lambda x,y:x+ysum(1,2)>>>3·使用匿名函数对字典排序:infos = [ {"name":"张三", "salary":11111}, {"原创 2020-10-18 10:07:26 · 869 阅读 · 0 评论 -
Python:MySQL与python的交互,防止sql注入
python中使用MySQL的模块import pymysqlpython中使用MySQL的基本流程·python中使用MySQL的代码模板from pymysql import *# 创建connection连接conn = connect(host="localhost",port=3306,user="root",password="mysql",database="本地数据库名称", charset="utf8")# 获得cursor对象cs = conn.cursor(原创 2020-10-11 04:29:39 · 364 阅读 · 0 评论 -
Python:简单对战五子棋游戏,pygame做主体,tkinter做弹窗,
主模块代码:# -*- coding:utf-8 -*-import sysfrom tkinter import messageboximport tkinterimport pygameimport buttonSCREEN_SIDE = (400, 500) # 屏幕大小black_color = (0, 0, 0)white_color = (255, 255, 255)yellow_color = (237, 145, 33)COUNTER = 1 # 记录每一步原创 2020-10-05 17:00:14 · 878 阅读 · 0 评论 -
Python:copy模块,举例细谈浅拷贝和深拷贝
关于copy模块copy.copy() : 为浅拷贝copy.deepcopy() : 为深拷贝简单的说:浅拷贝 :是 指向被拷贝的数据的地址,如果被拷贝的源数据发生了变化,则拷贝的数据也会发生变化深拷贝:是 将被拷贝的源数据资源完完整整拷贝一份新的出来,并指向这个新的数据地址,那么即使被拷贝的源数据发生了变化,拷贝的数据也不会发生变化··● 当对a指向的数据进行改动时,浅拷贝的数据都会发生改动,因为浅拷贝指向的都是同一个数据地址,而深拷贝的数据并没有发生改动,因为深拷贝指向的是新创建原创 2020-09-26 16:20:43 · 319 阅读 · 0 评论 -
Python:GIL(全局解释器锁)
什么是Python GIL?python语言和GIL本身没有任何关系,是由于历史原因,在编写Cpython解释器时(用c语言写的python解释器),加入了GIL并且难以移除。由于GIL的存在,导致在同一时刻即便执行多线程,也只允许程序中只有一条线程运行...原创 2020-09-26 14:18:53 · 149 阅读 · 0 评论 -
Python:web 服务器的实现(HTTP协议,多任务实现http服务器,单进程、单线程实现并发http服务器,epoll原理使用)
HTTP协议:超文本传输协议,在浏览器发送请求给服务器时,服务器会收到按照HTTP协议规定的格式的请求字符串,并且服务器对浏览器应答时也必须按照HTTP协议规定的格式进行应答实例:`百度服务器所返回的数据请求:Response Headers + body● 区分header和body的就是空一行,再没出现空一行之前全部都属于header头数据。● header 为规范的协议格式, body为展现给服务器展现给浏览器的内容...原创 2020-09-26 03:15:08 · 296 阅读 · 0 评论 -
python 代码实例:利用 tcp socket 通信实现文件下载器
客户端代码:# -*- coding:utf-8 -*-import socketimport osdef check_file(f): if os.path.exists("/home/ubuntu/Desktop/"+f): print("下载成功!") else: print("下载失败!")def main(): # 创建客户端套接字 tcp_socket = socket.socket(socket.AF_INET,原创 2020-09-23 05:15:00 · 243 阅读 · 0 评论 -
Python: 实现 Socket(套接字)通信,udp、tcp实现通信的具体过程
一. socket简介● 不同电脑间要进行通信,通过网络层的ip地址可以唯一标识确认在网络中的主机,通过传输层的协议(tcp/udp)和端口可以唯一标识确认主机中的应用进程,那么拥有这些信息后即可在不同主机间也能找到想要发送的进程对象。● socket是进程间通信的一种方式,它最大的特长是能实现不同主机中的进程间通信,我们网络上的服务大多都是基于socket来完成通信,例如email,QQ聊天,浏览网页等。● 实现网络功能最核心最原始的方式就是socket通信·1.创建socketimport原创 2020-09-23 03:02:33 · 648 阅读 · 1 评论 -
Python: 字符串与字节流的两种转换方式
字符串(str) ???? 字节流(bytes)bytes(字符串, encoding="utf-8")or字符串.encode("utf-8")·代码实例:····字节流(bytes) ???? 字符串(str)str(字节流, encoding="utf-8")or字节流.decode("utf-8")·代码实例:····这里utf-8不固定,以电脑操作系统可支持的编码方式为主,如Linux支持utf-8,Windows支持gbk字节流不原创 2020-09-22 17:09:01 · 13120 阅读 · 1 评论 -
python随堂记:正则表达式,re模块在python中的应用
正则表达式是一个通用的语法,它的规则在所有语言中都适用1.re模块的使用过程# 导入re模块import re# 使用match方法进行匹配操作result = re.match(正则表达式, 要匹配的字符串)# 如果上一步匹配到数据的话,可以使用group方法来提取数据result.group()用re.match(r"正则表达式", 要匹配的字符串)如果匹配成功则会有返回值,如果没有匹配成功则不会有返回值re.match().group()输出的数值就是匹配用户所想要的结原创 2020-09-17 23:24:55 · 265 阅读 · 1 评论 -
Python:实现多任务,多进程,多线程,多协程的关系和应用区别
关于多任务:并发(任务数 > cpu核数):假的多任务,通过时间片旋转或优先级调度,让程序切换的速度足够快,使人产生在同时运行多个任务的假象并行(cpu核数 >= 任务数):真的多任务,每一个cpu都各自运行一个任务·● 在python中运用进程,线程,协程所需要导入的模块分别是:进程:multiprocessing线程:threading协程:gevent(最常用的)以上在程序中都是并发执行,通过在极短的时间内cpu多次重复调用不同的任务来实现多任务。进程和线程根据CPU的核原创 2020-09-14 21:32:34 · 424 阅读 · 0 评论 -
Python:协程的实现(迭代器实现for循环,生成器,yield→greenlet→gevent【图片下载器实例】)
首先说下迭代器的优点:●在迭代器中存储的是生成值的方法代码,并不会存储值本身●因而迭代器所占用的内存空间会非常小·一. 判断是否可以迭代的方法● 判断一个变量是否是可以迭代的对象(可以用for循环遍历)● 观察该变量是否与collections模块中的Iterable类有关(Iterable类与迭代有关)● 用isinstance(对象, 类)去判断 (isinstance可用来判断两者之间的关系,返回True则表示有关联,False贼表示没有关联)具体实现:In [8]: from co原创 2020-09-14 02:35:09 · 545 阅读 · 0 评论 -
Python:多任务,进程的实现,队列的用法,进程池文件复制器实例
进程是指程序在借用或者占用资源时,被称作为进程实现代码:import multiprocessing #导入进程模块import timedef test1(): while True: print("----1----") time.sleep(1)def test2(): while True: print("----2----") time.sleep(1)def main(): # 调用进程模原创 2020-09-04 02:33:49 · 335 阅读 · 0 评论 -
Python:多任务,线程,锁的使用
关于多任务:**并发(任务数 > cpu核数):**假的多任务,通过时间片旋转或优先级调度,让程序切换的速度足够快,使人产生在同时运行多个任务的假象**并行(cpu核数 >= 任务数):**真的多任务,每一个cpu都各自运行一个任务·python中的线程·1.使用threading模块1)在python文件运行后会自动产生一个主线程从上向下读取代码执行代码2)在threading模块中,有一个Thread类,通过Thread类创建一个对象,相当于创建了一个子线程,在该对象调用st原创 2020-08-17 00:57:44 · 254 阅读 · 0 评论 -
Python:pygame包的详细使用方法 <用实例渐进掌握>
使用pygame创建图形窗口·1)游戏的初始化和退出●要使用pygame提供的所有功能之前,需要调用init 方法●在游戏结束前需要调用一下quit方法方法说明pygame.init()导入并初始化所有pygame模块,使用其他模块前,必须先调用iinit方法pygame.quit()卸载所有pygame模块,在游戏结束之前调用·2)游戏中的坐标系●原点在左上角 (0,0)●x轴水平方向向右,逐渐增加●y轴垂直方向向下,逐渐增加如图:● 在游戏中,原创 2020-08-07 23:09:05 · 5287 阅读 · 2 评论