Python
文章平均质量分 63
对Python的基础知识的一次回顾,如有问题立即改正
执笔苦行僧
学习是一场没有终点的马拉松
展开
-
Python 构建 Web 服务器:3.0
Python 构建 Web 服务器:3.0一、简介在上一章中我们已经成功让 Web 服务器能够持续运行和同时支持多用户连接。但是迄今为止我们的 Web 服务器对于所有的路由都只能返回一句 “Hello World”。作为一个合格的 Web 服务器,我们需要能够支持解析路由的功能。那么本节,我们就将实现解析路由并返回文本资源的功能。二、解析路由随意用浏览器抓包一个 HTTP 报文首部进行观察:GET / HTTP/1.1Host: www.baidu.comUser-Agent: Mozill原创 2021-07-10 15:05:11 · 475 阅读 · 1 评论 -
Python学习之路 —— struct模块使用
用途按照指定格式将 Python 数据类型转换为字节流;按照指定格式将字节流转换为 Python 数据类型;解析 C 语言中的结构体;内置函数函数返回值功能pack(fmt, *args)string按照指定格式(fmt),将数据(*args)转换成字节流,返回字节流pack_into(fmt, buffer, offset, *args)None按照给定的格式(fmt),将数据(*args)转换成字节流,并将字节流写入以 offset (起始位)开始的 b原创 2020-08-11 18:07:30 · 186 阅读 · 0 评论 -
多进程发生内存溢出的解决办法
前言昨天在编写一个多进程程序时,由于自己考虑不周,程序在启动后发生了内存溢出的故障。导致自己的程序卡死崩溃,电脑也陷入了死机黑屏的状态。见识到内存溢出的巨大威害后,觉得自己有必要好好了解一下编写多进程程序时的注意事项,特进行一个总结。Bug复现下面的这个程序是自己抽象简化后的:import multiprocessingimport timefrom random import randintdef func(): flag = randint(0, 1) if fla原创 2020-08-10 09:22:08 · 3030 阅读 · 3 评论 -
Python学习之路 —— @property 原理剖析及实现
熟悉 Python 的朋友们都知道,Python 中有一个可以让方法像属性一样访问的 @property 装饰器,这个装饰器主要用来控制我们的属性。今天就带大家来解析这个装饰器。分析功能首先我们应该知道它实现了怎样的功能:查看官方文档:""" Property attribute. fget function to be used for getting an attribute value fset function t.原创 2020-08-08 13:07:50 · 526 阅读 · 1 评论 -
UnboundLocalError: local variable ‘xxx‘ referenced before assignment
错误详情在Python程序中引用函数时,有时会出现这样的错误:UnboundLocalError: local variable ‘xxx’ referenced before assignment这个错误的意思是:局部变量赋值前被引用先看一下出错程序:def demo(): num += 1num = 1demo()按照Python的内部空间分配来说,num是属于...原创 2020-02-02 13:33:12 · 1051 阅读 · 0 评论 -
Python 在创建多进程时抛出RuntimeError错误
一、错误信息RuntimeError:An attempt has been made to start a new process before thecurrent process has finished its bootstrapping phase.This probably means that you are not using fork to start yourchil...原创 2020-05-04 21:57:28 · 10231 阅读 · 3 评论 -
为什么 Python 默认参数必须用不可变对象?
话不多说,上代码:def fun(x, A=[], B=''): C = [] A.append(x) B = B + x C.append(x) print(f"A:{A} B:{B} C:{C}")fun('1')fun('2')fun('3')我们在这段代码中:定义了一个位置参数 x,一个一个默认参数 A,A 的默认值为空列表,另一个默认参数 B,B 的默认值为一个空字符串,在函数体中定义了一个变量 C,并也给 C 传递了一个空列表。大家猜猜函原创 2020-07-30 23:05:24 · 732 阅读 · 1 评论 -
利用 print 函数动态显示任务进度
一、print函数实现flush参数:在print函数的所有参数中,有一个关键字参数叫flush,这个参数为True时会将缓冲区的内容直接性输出。\r转义字符:转义字符\r会每次回到开头我们可以巧妙利用flush参数和转义字符"\r"实现进度显示:for i in range(101): print("%d%"%i, end="", flush=True)这样我们就可以实现从进度...原创 2019-11-16 23:06:12 · 342 阅读 · 0 评论 -
利用 Python 制作有趣的二维码
一、效果图二、程序分析近年来二维码已经在我们的生活中普及,并且在日常生活中扮演着重要角色。大家在日常生活中见到的二维码都是怎样的呢?我相信大家看到的大部分都是黑白的,今天我就来教大家怎样用Python来制作属于我们自己的二维码!我们今天制作二维码用到的是一个第三方库:myqr我们在这里通过pip的方法安装这个库,打开我们的命令提示符窗口,输入:pip install myqr然后回车就可...原创 2019-10-02 00:05:55 · 330 阅读 · 0 评论 -
利用Python绘制图案——七色花子
一、效果图二、程序分析本次程序我们依然是使用turtle库进行绘制的,因此在我们的程序第一行就是加载我们Python的turtle库了,不了解的同学可以参看我的上一篇博客哦。接下来就是对我们的程序进行分析了,观察我们的效果图,发现本次的程序和上一次的程序有着一个相同之处——螺旋。上次我们绘制了螺旋的正方形,我们这一次绘制螺旋的正七边形,那么绘制正七边形的程序和上一次绘制正方形的程序就是大同...原创 2019-10-01 22:56:46 · 1492 阅读 · 0 评论 -
利用Python绘制图案——玫色与雅
一、效果图二、程序分析在介绍代码之前我们先简单介绍一下turtle库。turtle库是Python的基础绘图库(官方手册),turtle库是Python标准库之一,不需要自己再另外安装。turtle库被介绍为一个最常用的用来给孩子们介绍编程知识的方法库,其主要是用于程序设计入门,利用turtle可以制作很多复杂的绘图。好了,turtle库的介绍到此为止,接下来开始分析我们的程序:因为这个...原创 2019-09-29 15:31:52 · 1652 阅读 · 0 评论 -
自动更新 Python 的所有库
利用Python脚本一次性更新所有的库n = 1s=len(get_installed_distributions())for dist in get_installed_distributions(): r = s - n call("pip install --upgrade " + dist.project_name, shell=True) print("共有{}个库,正...原创 2020-03-08 11:40:35 · 262 阅读 · 0 评论 -
Python学习之路——MD5加密
一、MD5简介MD5(MD5 Message-Digest Algorithm),中文名称第五代信息摘要算法,它是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5的特性:压缩性: 任意长度的数据,算出的MD5值长度都是固定的。容易计算: 从原数据计算出MD5值很容易。抗修改性: 对原数据进行任何改动,哪怕...原创 2020-03-23 14:39:34 · 610 阅读 · 0 评论 -
Python学习之路——base64编码
一、base64简介Base64是网络上最常见的用于传输 8Bit字节码 的编码方式之一,它就是一种基于64个可打印字符来表示二进制数据的方法。(RFC2045~RFC2049上有MIME的详细规范)Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的 “/”和“+” 字符...原创 2020-03-23 10:31:27 · 395 阅读 · 0 评论 -
Python学习之路——枚举类
前言:首先大家要明白的是:枚举类不是Python的原生类!不是原生类!不是!Python中的枚举类是依靠 enum模块 来实现的。枚举是在 Python3.4 添加的新功能(安装Python解释器后自带的官方模块),3.4以前的版本需要使用pip install enum来安装模块后使用。一、枚举什么是枚举?枚举可看作是一系列符号名称的集合,集合中每一个元素要保证唯一性和不可变(与字典类...原创 2020-03-21 12:01:31 · 431 阅读 · 0 评论 -
Python学习之路——协程
文章目录一、协程二、asyncio模块一、协程协程(Coroutine),又称微线程,纤程。协程由多个子函数构成。执行过程中,在子函数内部可中断,然后转而执行别的子函数,在适当的时候再返回来接着执行子函数。二、asyncio模块...原创 2020-02-11 22:59:03 · 155 阅读 · 1 评论 -
Python学习之路——多线程
一、定义进程可以简单的理解为一个可以独立运行的程序单位,它是线程的集合,进程就是有一个或多个线程构成的。而线程是进程中的实际运行单位,是操作系统进行运算调度的最小单位。可理解为线程是进程中的一个最小运行单元。二、Python代码实现在Python3中可以利用 threading 模块创建多线程,每实例化一次即创建一次线程。import _threadimport time# 为线程定...原创 2020-02-05 23:35:54 · 524 阅读 · 0 评论 -
Python学习之路——多进程
一、定义:进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。凡是用于完成操作系统的各种功能的进程就是系统进程,而所有由你启动的进程都是用户进程。二、Python实现Python的 multiprocessing模块 可以开启多线程。multiprocessing模块提供了一个Process类,每创建一个Process类的实例对象即创建一个进程。代码实现:from...原创 2020-02-05 23:26:51 · 452 阅读 · 0 评论 -
Python学习之路——单例模式
定义:单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。举例:中国的婚姻制度其实就是一个活生生的单例模式。在你和一位女性结婚时,你需要去民政局登记...原创 2020-02-05 11:47:23 · 187 阅读 · 0 评论 -
Python学习之路——迭代器与生成器
一、迭代定义:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。在前面的学习中,我们知道 list、tuple、str 等这些对象是可以用 for 循环进行遍历的,这种遍历的方式我们就称之为迭代。能够进行迭代行为的对象我们就称之为可迭代对象(Iterable)。我们可以用Python的内置模块来判断一个对象是不是可迭代对象:from collections.abc imp...原创 2020-02-01 23:53:17 · 132 阅读 · 0 评论 -
Python学习之路——元类
一、什么是元类?在Python中,一切皆对象。众所周知,实例化对象是由类创建的。那么类是不是对象?它又是由什么创建的呢?答案是肯定的,类也是一个对象,类是由元类创建的。class A(): passprint(type(A)) # <class 'type'>print(isinstance(A, type)) # True通过代码我们可以发现,类的类居...原创 2020-02-01 17:13:13 · 115 阅读 · 0 评论 -
Python学习之路——内存管理
一、使用__solts__正常情况下,当我们定义了一个类,并创建了一个类的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。但当我们想要限制实例能够绑定的属性时,我们就可以使用 __solts__ 。__slots__在python中是扮演属性声明(Attribute Declaration)的角色,只有在 __slots__ 里的属性才能够被绑定,没有在 __slots...原创 2020-01-28 23:13:59 · 111 阅读 · 0 评论 -
Python学习之路——深入学习多态
定义:抽象类(abstract baseclass,ABC)是指在类中定义了纯虚成员函数的类。纯虚函数一般只提供了接口,并不会做具体实现,实现由它的派生类去重写。抽象类不能被实例化(不能创建对象),通常是作为基类供子类继承,子类中重写虚函数,实现具体的接口。简言之,抽象基类是不能用以实例化的,抽象基类存在的意义就是为了让另一个子类来继承的。继承了抽象基类的子类必须重写抽象基类中实现的虚函...原创 2020-01-27 21:42:30 · 155 阅读 · 0 评论 -
Python学习之路——类的魔法方法
前言类作为Python中最核心的部分,我们作为作为开发人员不仅仅可以为类自定义方法,在Python内部也为我们提供了众多魔法方法来帮助我们完善类的功能。1. __delattr__2. __dir__3. __eq__4. __format__5. __getattribute__6. __ge__7. __gt__8. __hash__9. __init_subclass__...原创 2020-01-09 23:11:40 · 603 阅读 · 0 评论 -
Python学习之路——索引
博客列表Python学习之路——计算机基础知识Python学习之路——编程基础知识Python学习之路——入门知识Python学习之路——字符串Python学习之路——运算符Python学习之路——条件控制语句Python学习之路——列表(list)Python学习之路——元组(tuple)Python学习之路——字典(dict)Python学习之路——集合(set)Python学习之路——函数Python学习之路——高阶函数Python学习之路——面向对象入门Python学习原创 2019-11-07 15:44:20 · 281 阅读 · 0 评论 -
Python学习之路——计算机基础知识
一、计算机的概念1.什么是计算机?1946年2月14日人类历史上第一台真正意义上的计算机问世。计算机到了今天已经成为人们日常生活中离不开的一个重要组成部分。计算机俗称电脑,是现代一种用于高速计算的电子计算机器,它可以进行数值计算,也可以进行逻辑计算,并且还具备存储记忆功能。2.计算机的组成计算机是由硬件和软件结合而成的强大工具:硬件:键盘,鼠标,硬盘,CPU等实际物体;软件:程序,操作...原创 2019-09-26 22:12:14 · 289 阅读 · 0 评论 -
Python学习之路——编程基础知识
一、计算机语言1.计算机语言的基本概念计算机语言(Computer Language)指的是人与计算机之间通信的方式。不同的计算机语言之间有着不同的语法规则。2.高级语言的分类面向对象的语言:以对象为核心,将对象的行为与属性封装成类。例:Python,Java等。面向过程的语言:以函数为核心,将需要完成的任务分成各个最简子任务,将子任务封装成函数,在程序中通过调用一个一个函数来完成...原创 2019-09-27 00:06:15 · 293 阅读 · 0 评论 -
Python学习之路——入门知识
一、编程基本概念1.表达式表达式指的是由数字、计算符、数字分组符(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。2.语句语句指的是一个语法上自成体系的单位,它由一个词或句法上有关连的一组词构成。3.变量当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作变量是计算机内存中的一块区域,存储规定范围内的值。值是可以改变,通俗的说变量就是给数据起个名...原创 2019-09-27 18:39:18 · 174 阅读 · 0 评论 -
Python学习之路——字符串
一、创建字符串字符串是由数字、字母、下划线组成的一串字符。在Python中可以用一对单引号或者一对双引号创建字符串类型对象。长字符串:当需要保留保留字符串中的格式长字符串可以用三重引号表示,在长字符串中可以保留换行等格式。注意:相同引号之间不能嵌套!二、特殊字符转义字符描述(在行尾时)续行符\反斜杠符号’单引号"双引号\n换行...原创 2019-09-28 10:09:23 · 368 阅读 · 0 评论 -
Python学习之路——条件控制语句
一、if语句语法格式:if 条件判别式1: 代码块1elif 条件判别式2: 代码块2 ...else: 代码块n执行流程:if-else语句执行时先对条件判别式1进行判断,当条件判别式1为True时执行代码块1,为False时判断条件判别式2,依次类推。当所有的条件判别式都为False时执行else后面的语句。注:整个if-else语句中,只会执行一条语句。二、whil...原创 2019-10-03 00:36:40 · 185 阅读 · 0 评论 -
Python学习之路——运算符
一、运算符m + n:得到m和n相加(有浮点型参与则结果为浮点型,字符串、列表、元组、集合也可使用)m - n:得到m和n相减的算数差(有浮点型参与则结果为浮点型)m * n:得到m与n(n必须为整型)相乘(有浮点型参与则结果为浮点型,字符串、列表、元组也可使用)m ** n:得到m的n次方幂(结果为浮点型)m / n:得到m和n相除的算数商(结果为浮点型)m // n:得到m和n相除...原创 2019-10-02 20:29:01 · 1225 阅读 · 0 评论 -
Python学习之路——列表(list)
列表是最常用的Python数据类型。一、创建列表# 方式一list1 = ['Python']# 方式二list2 = list()# 在list()中可传递一个可迭代对象,如果不传参数则生成一个空列表# 例子:lis = list('Python')# ['P', 'y', 't', 'h', 'o', 'n']这就是通过list()创建的列表二、访问列表的值1. 通过索...原创 2019-10-13 18:38:34 · 1011 阅读 · 0 评论 -
Python学习之路——元组(tuple)
元组是Python序列中一种不可变序列。当我们希望数据不变的时候我们就用元组,其余情况都用列表。一、创建元组# 方式一 注意要有逗号tup1 = ("1",)tup2 = "1", # 这种方法也可以,注意也要有逗号# 方式二tup3 = tuple()# 在tuple()中可传递一个可迭代对象,如果不传参数则生成一个空元组# 实例:tup4 = tuple("123") # t...原创 2019-10-15 00:27:39 · 516 阅读 · 0 评论 -
Python学习之路——字典(dict)
字典是Python中一种新的数据结构,称之为映射(mapping)。字典的作用就是用来存储对象的容器。列表存储数据性能很好,但是查询数据性能很差。字典中每一个元素都有唯一的一个名字,通过这个名字可以快速查找到指定的元素。...原创 2019-10-19 00:25:38 · 425 阅读 · 0 评论 -
Python学习之路——集合(set)
集合是Python里一个无序的不重复元素序列。一、创建集合集合和列表基本一致,但是集合具有以下几个特点:1.集合只能存储不可变对象2.集合中存储的对象是无序的3.集合中不能出现重复的元素# 方式一set1 = {'set'}# 方式二set2 = set() # 创建一个空字典# set()函数中可以传递一个可迭代对象set3 = set('set') # ser3 = {'...原创 2019-10-22 19:42:49 · 559 阅读 · 0 评论 -
Python学习之路——函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性和代码的重复利用率。函数也是一个对象!一、创建函数函数的语法:def 函数名([形参1,形参2,形参3...]): # 代码块(代码块不能为空)例子:# 例如:def fn(): print('Python')上面的这个例子就是一个函数,这个函数的功能就是打印字符串 ‘Python’...原创 2019-10-24 07:54:35 · 204 阅读 · 0 评论 -
Python学习之路——高阶函数
Python语言中,一切皆对象。函数本身也是一个对象,我们知道函数的参数可以传递任意对象,函数的返回值也可以返回任意对象,那么在Python中函数能不能传递或者返回一个函数呢?答案是当然可以,我们把这种传参为函数或者返回值为函数对象的函数称为高阶函数。...原创 2019-10-26 00:16:18 · 238 阅读 · 0 评论 -
Python学习之路——面向对象入门
一、面向对象简介总所皆知,Python语言是一门面向对象得语言。那么,对象是什么?面向对象又是什么?万物皆对象。原创 2019-10-31 00:06:43 · 213 阅读 · 0 评论 -
Python学习之路——异常
一、简介什么是异常?在我们编写Python程序的过程中,由于我们的逻辑不严密或者其他原因是我们的程序出现错误,这就是出现异常。由于在Python程序中,程序一旦出现异常,那么整个程序会立即终止,异常后面的代码都不会执行(异常前面的代码会执行,在这里也体现出Python是编译性语言的特征)。为了不让我们的程序一旦出现出现异常就卡死,我们就需要对程序中可能出现异常的部分进行处理。二、异常的处...原创 2019-11-06 13:13:14 · 156 阅读 · 0 评论 -
Python学习之路——文件
文件在作为计算机的重要组成部分,程序本质上也是文件。很多时候我们需要将数据保存到本地,这个时候就需要对文件进行操作。一、打开文件在Python中,我们利用open()函数来打开一个文件。open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)file:文件路径...原创 2019-11-07 01:31:47 · 185 阅读 · 0 评论