![](https://img-blog.csdnimg.cn/20210116225306888.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python学习笔记
文章平均质量分 74
一起快乐的学习Python吧,每天进步一地点点!
贾维斯Echo
这个作者很懒,什么都没留下…
展开
-
2021最强Python学习教程,从零基础入门到精通
你准备好了吗???are you ready???前言01.python介绍02.项目开发完整流程(详解版)03.项目开发流程(精简版)第一篇 计算机核心基础01 计算机组成原理第二篇 编程语言01 编程语言介绍第三篇 python入门01 python介绍及IDE集成开发环境02 python是解释型的强类型动态语言03 python语法之变量、常量04 python语法之注释05 python垃圾回收机制GC06 Python语法入门之基本数据类型07 Python语法原创 2021-01-18 20:06:12 · 38135 阅读 · 13 评论 -
Linux安装Anaconda和虚拟环境配置
1.1可以直接在官网下载,上传到服务器1.2也可以直接在Linux使用wget命令选择合适的版本,右键->复制链接地址。wget+地址就可以下载了。可能会出现的问题遇到“–no-check-certificate”问题。原创 2022-07-26 23:48:10 · 3041 阅读 · 0 评论 -
python (socket)网络编程与并发
文章目录一.网络编程二.socket编程三.并发编程一.网络编程二.socket编程三.并发编程原创 2021-09-27 11:39:57 · 438 阅读 · 1 评论 -
pip升级报错 ValueError: Unable to find resource t64.exe in package pip._vendor.distlib
pip升级报错 ValueError: Unable to find resource t64.exe in package pip._vendor.distlib问题描述使用pip安装第三方模块的时候,提示我pip版本过低WARNING: You are using pip version 21.0.1; however, version 21.1.1 is available. You should consider upgrading via the 'F:\python38\python.exe原创 2021-05-20 22:44:48 · 1302 阅读 · 4 评论 -
pip源
02. pip源更换前面已经介绍过pip软件包管理工具基本使用及换源 | 链接一、国内常用镜像源清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/阿里云:http://mirrors.aliyun.com/pypi/simple/中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/华中科技大学:http://pypi.hustunique.com/豆瓣源:http://pypi.d原创 2021-05-06 18:20:14 · 71457 阅读 · 2 评论 -
python的UUID模块
UUID模块文章目录UUID模块一、UUID介绍1.什么是UUID?2.UUID有什么用?3.什么时候用UUID?在Web应用程序中在数据库系统中4.UUID的结构二、UUID属性只读属性三、UUID模块提供的UUID类和函数1.`uuid.uuid1([node[, clock_seq]])`--->基于时间戳2.uuid.uuid2()--->基于分布式计算环境DCE(Python中没有这个函数)3.`uuid.uuid3(namespace, name)`--->基于名字的MD5散原创 2021-04-21 15:47:30 · 4734 阅读 · 0 评论 -
描述符`__get__,__set__, __delete__`
描述符__get__,__set__, __delete__文章目录描述符`__get__,__set__, __delete__`一、什么是描述符?二、描述符是做什么的?三、描述符的种类与属性查找优先级注意:四、python是强类型动态语言案例(了解):五、类的装饰器:无参 (跟描述符没有关系)六、有参装饰器七、使用类装饰器+ 描述符,实现对对象类型的控制八、描述符总结九、自定制@propertyproperty的使用property的本质原理十、自定制@classmethod十一、自定制@stati原创 2021-04-18 00:19:45 · 448 阅读 · 0 评论 -
` __str__ 和 __repr__`
__str__ 和 __repr__一、__str__触发条件: print([对象]) 的时候触发 __str__ 的执行class Person: def __init__(self, name): self.name = name def __str__(self): print("打印对象时触发了__str___") return f"对象名字:{self.name}"P1 = Person("淘小欣")P2 = P原创 2021-04-18 00:10:59 · 234 阅读 · 0 评论 -
`__init__ 和 __new__(重点)`
__init__ 和 __new__(重点)文章目录`__init__ 和 __new__(重点)`使用方法比较传入参数比较返回值比较__init__对象初始化调用 :类+()会触发__new__对象生成的时候:类+()会触发class Person: def __init__(self, name): print("触发__init__") # 初始化,self这个对象,已经遭出来了 # self是在哪里造出来的?__new__中造出原创 2021-04-18 00:10:09 · 256 阅读 · 0 评论 -
`__call__`
__call__触发条件:[对象] + ()就触发__call__的执行class Person: def __init__(self,name): self.name=name def __call__(self, *args, **kwargs): print(args) print(kwargs) print(self.name+"触发了__call__")p1=Person("淘小欣")p1()原创 2021-04-18 00:07:05 · 246 阅读 · 0 评论 -
注释文档 `__doc__`
注释文档 __doc__注释文档 __doc__返回类的注释信息class Test: ''' 这是用来测试__doc__的注释信息 信息信息 ''' ...T = Test()print(T.__doc__)'''输出这是用来测试__doc__的注释信息信息信息'''该属性无法被继承class Foo: '我是描述信息' passclass Bar(Foo): passF = Foo()print(原创 2021-04-17 23:56:13 · 239 阅读 · 1 评论 -
`__module__ 和 __class__`
__module__ 和 __class__文章目录`__module__ 和 __class__`一、`__module__`二、`__class__`一、__module__可以查看当前操作的对象在哪个模块#文件 "test.py" 内容class Foo: def __init__(self,name): self.name = name #当前执行文件内容from test import Fooobj = Foo("shawn")pri原创 2021-04-17 23:55:00 · 248 阅读 · 0 评论 -
`__slots__ 和 __dict__`
__slots__ 和 __dict__文章目录`__slots__ 和 __dict__`一、`__slots__`二、`__dict__`一、__slots__默认我们可以给class实例绑定任何属性和方法,这就是动态语言的灵活性如果我们想要限制class的属性怎么办?比如,只允许对Persion实例添加name和age属性。为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class能添加的属性slots是一个类变量,变量值可以是原创 2021-04-17 23:53:49 · 290 阅读 · 0 评论 -
` __all__`
__all__前面模块介绍章节其实已经介绍过了 __all__ 的使用, 它用来在使用 from [模块名] import * 的时候, 针对这个 * 来限制能够使用的属性# 文件 "test.py" 内容__all__ = ["Foo","Bar"] # 如此只能使用 Foo,Bar 两个属性class Foo: def __init__(self): print("Foo")class Bar: def __init__(self): pr原创 2021-04-17 23:52:31 · 226 阅读 · 0 评论 -
实现迭代器`__iter__ 和 __next__`
实现迭代器__iter__ 和 __next__文章目录实现迭代器`__iter__ 和 __next__`前面迭代器那一章我们讲解了可迭代对象和迭代器对象的特点以及 For 循环的原理 :可迭代对象 (iterable) : 在python中,但凡内置有 __iter__方法的对象,都是可迭代的对象迭代器对象 (iterator) : 内置有__next__和 __iter__方法的对象, 就是迭代器对象, 可迭代对象执行__iter__得到的返回值就是迭代器对象For 循环原理请到上面链接查原创 2021-04-17 23:51:22 · 391 阅读 · 0 评论 -
` __len__`
__len__计算对象的长度, return 是多少, len([对象])的结果就是多少触发条件 : 使用 len([对象]) 时触发, 返回值必须为整数# "return"多少就是多少class Person: def __len__(self): return 11111 # 只能返回整数, 不然报错 : "TypeError" 类型错误p = Person()print(len(p)) # 11111class Person: def __i原创 2021-04-17 23:49:58 · 275 阅读 · 0 评论 -
` __hash__`
__hash__触发条件 : 使用 hash([对象]) 函数的时候触发, 里面返回什么值就是什么值, 返回值必须是整数class Str: def __hash__(self): return 12345 # # 只能返回整数, 不然报错 : "TypeError" 类型错p=Str()print(hash(p)) #12345可变类型 -----> 不可hash类型不可变类型 -----> 可hash类型print(hash原创 2021-04-17 23:49:01 · 297 阅读 · 0 评论 -
`__eq__`
__eq__触发条件 : 在两个对象进行 == 比较值的时候触发 __eq__() 的执行, 在该方法内部可以自定义比较规则print(12 == [1,2,3]) # Falseprint("w" == (2,3,5,)) # Falsel1 = [1,2,3]l2 = [1,2,3]print(l1 == l2) # True (只比较值, 不比较ID)自定义规则示例class Str: def __init__(self,name):原创 2021-04-17 23:48:11 · 257 阅读 · 0 评论 -
上下文管理协议 __enter__ 和 __exit__
上下文管理协议 __enter__ 和 __exit__文章目录上下文管理协议 `__enter__ 和 __exit__`一、什么是上下文管理协议二、exit的三个参数三、为什么要使用上下文管理四、自定义一个 **open** ,可以进行文件操作五、总结一、什么是上下文管理协议上下文管理协议就是 with 语句, 为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__()和__exit__()方法with 对象,触发对象的__enter__的执行在with同一级别写代原创 2021-04-17 23:47:25 · 312 阅读 · 0 评论 -
链式调用知识
补充链式调用知识补充链式调用知识链式调用是设计程序的模式, 在Java 和 js 中被广泛应用链式调用格式 : A.方法.方法.方法.方法优势和好处 : 代码量大大减少, 逻辑集中清晰明了, 且易于查看和修改class Person: def __init__(self,name,age,sex): self.name= name self.age = age self.sex = sex def print_name(原创 2021-04-16 11:55:52 · 647 阅读 · 0 评论 -
析构方法 __del__
析构方法 __del__文章目录析构方法 `__del__`析构方法 `__del__`1.__del__的使用场景析构方法 __del__前面我们学了 __init__ 这个构造方法, 在实例对象的时候自动触发, 也叫初始化, 而析构方式是在执行 del对象的时候, 也就是在对象被清理之前自动触发 __del__ 的执行, 那么我们就可以在这方法里面进行一些操作class Test: def __del__(self): print("删除对象, 触发了我")T = T原创 2021-04-16 11:53:37 · 244 阅读 · 0 评论 -
__format__
__format__文章目录`__format__``__format__`1.`format( )` 函数2.`__format__` 方法应用实例__format__自定义格式化字符串1.format( ) 函数前面已经介绍过了format( ) 函数的玩法, 下面简单回顾一下# 直接传变量名msg = "my name is {name} my age is {age}".format(age=18, name="淘小欣")print(msg) # my name is 淘小欣原创 2021-04-16 11:50:59 · 586 阅读 · 0 评论 -
item系列 __getitem__, __setitem__,__delitem__
item系列 __getitem__, __setitem__,__delitem__文章目录item系列 `__getitem__, __setitem__`,`__delitem__`item系列`__getitem__`,`__setitem__`,`__delitem__`应用实例item系列__getitem__,__setitem__,__delitem____getitem__ : 通过中括号取值, 触发它的执行__setitem__ : 通过中括号赋值, 触发它的执行_原创 2021-04-16 10:31:32 · 338 阅读 · 0 评论 -
__getattribute__
__getattribute__文章目录`__getattribute__``__getattribute__`介绍1.先看看:`__getattr__`2.`__getattribute__`3.`__getattr__` 和 `__getattribute__`同时存在4.总结__getattribute__介绍1.先看看:__getattr__点 . 属性 没找到触发class Foo: def __init__(self, x): self.x = x原创 2021-04-16 10:24:31 · 437 阅读 · 0 评论 -
点拦截方法__getatter__,__setattr__, __delattr__
点拦截方法__getatter__,__setattr__, __delattr__文章目录点拦截方法`__getatter__,__setattr__, __delattr__`一、点拦截方法`__getattr__`,`__setattr__`,`__delattr__`注意:应用示例一、点拦截方法__getattr__,__setattr__,__delattr__注意:以下的自动触发的前提是操作对象达到某一条件, 自动触发其类中定义的方法。同理, 类也是对象. 如果实例化类的元类中定义了以原创 2021-04-16 10:18:14 · 398 阅读 · 0 评论 -
isinstance( ) 和 issubclass( ) 方法
isinstance( ) 和 issubclass( ) 方法文章目录isinstance( ) 和 issubclass( ) 方法一、 isinstance(obj,cls)1. isinstance()与type()2.不同之处3.注意二、issubclass(sub,super)一、 isinstance(obj,cls)1. isinstance()与type()检查一个**对象(obj)是否是类(cls)**实例化出来的class Foo1: def __init__(s原创 2021-04-15 14:51:22 · 317 阅读 · 0 评论 -
基于socketserver实现并发的socket套接字编程
基于socketserver实现并发的socket套接字编程文章目录基于socketserver实现并发的socket套接字编程一、基于TCP协议实现并发1.1 server类1.2 request类1.3 继承关系1.4 服务端1.5 客户端1.6 客户端一二、基于UDP协议实现并发2.1 服务端2.2 客户端2.3 客户端一2.4 .补充: 解决服务端重启, 操作系统没来的及回收端口占用的系统资源导致端口无法重用一、基于TCP协议实现并发基于TCP的套接字,关键就是两个循环,一个链接循环,一原创 2021-04-15 14:45:26 · 387 阅读 · 0 评论 -
粘包现象与解决粘包问题
粘包现象与解决粘包问题文章目录粘包现象与解决粘包问题一、引入一、粘包现象介绍1.socket收发消息的原理1.1缓冲区的作用:存储少量数据1.2收发的本质:不一定是一收一发2.为什么产生黏包3.什么是粘包?4.产生黏包的两种情况 :二、解决粘包问题的两种方式1、通过send数据长度的方式来控制接收(low版)为何low?2、使用struct模块实现精准数据字节接收(比较高效解决tcp协议的黏包方法)3、UDP没有粘包问题一、引入粘包问题主要出现在用TCP协议传输中才会出现的问题,UDP不会出现,因为T原创 2021-04-15 14:41:52 · 1189 阅读 · 0 评论 -
基于UDP协议套接字通信的实现
基于UDP协议套接字通信的实现注意:UDP是无连接的,所以先启动那一端都没有关系文章目录基于UDP协议套接字通信的实现一、UPD实现单用户通信二、UDP普遍无粘包问题三、总结:UDP与TCP的区别四、案例1、基于`UDP`协议实现时间格式化服务器2、基于`udp`协议是实现米聊功能一、UPD实现单用户通信服务端:'''from socket import *server=socket(AF_INET,SOCK_DGRAM) - 这里代指的是一种数据报协议,数据报协议指的就是udp协原创 2021-04-15 11:50:22 · 377 阅读 · 0 评论 -
基于TCP协议的套接字网络(socket)编程
基于TCP协议的套接字网络(socket)编程文章目录基于TCP协议的套接字网络(socket)编程一、什么是socket1、介绍:2、什么是socket?3、套接字socket封装的好处:4、研究套接字socket抽象层次的目的是什么?5、注意:二、套接字发展史及分类1、基于文件类型的套接字家族套接字家族的名字:AF_UNIX2、基于网络类型的套接字家族套接字家族的名字:AF_INET3、传输协议类型流式套接字 : **SOCK_STREAM**数据报套接字:**SOCK_DGRAM**原始套接字:**原创 2021-04-15 11:46:17 · 453 阅读 · 0 评论 -
基于TCP协议模拟ssh远程执行命令的CS架构软件
基于TCP协议模拟ssh远程执行命令的CS架构软件文章目录基于TCP协议模拟ssh远程执行命令的CS架构软件一、引入提示:二、模拟`xshell`远程执行命令的实现1、引入subprocess模块1.1类原型:1.2我们只需要关注几个参数:2、ssh远程执行命令的实现2.1、TCP服务端2.2、TCP客户端3、问题:数据接受不完整TCP客户端循环接收数据四、字符编码问题五、附赠宝典:CMD命令锦集一、引入在socket的模块可以发送数据消息的基础上,我们想远程发送一些系统命令来远程调试服务器。执行系统原创 2021-04-15 10:19:29 · 510 阅读 · 0 评论 -
Python魔法方法(内置方法)合集
魔法方法(内置方法)合集引入众所周知,方法是需要调用执行的,而魔法方法则不一样,他无需你的调用,在特定的时候会自己执行, 例如我们之前所学的__init__, 在实例对象 [类名]+() 的时候触发执行它一、什么是内置方法?定义在类内部, 以__开头 并以__结尾的方法特点:会在某种情况下自动触发执行二、为什么要用内置方法?为了高度定制化我们的类和对象三、常用魔法方法介绍isinstance( ) 和 issubclass( ) 方法点拦截方法__getatter__原创 2021-04-15 10:13:29 · 453 阅读 · 2 评论 -
绑定方法与非绑定方法
绑定方法与非绑定方法文章目录绑定方法与非绑定方法一、绑定方法与非绑定方法介绍二、绑定方法: 特殊之处在于将调用者本身当做第一个参数自动传入1.对象的绑定方法2.类的绑定方法3.类的绑定方法应用实例将文件里面的信息取出来实例成对象, 这个对象信息是已经存在的, 而不是新建的对象三、非绑定方法/静态方法应用实例四、小结1.绑定方法小结2.非绑定方法小结一、绑定方法与非绑定方法介绍注意!!: 绑定方法与非绑定方法存在的意义就是修改类中函数的一种归属, 让类中函数发挥最大的作用.类中定义的函数分为两原创 2021-04-15 10:07:14 · 443 阅读 · 1 评论 -
类的多态与鸭子类型
类的多态与鸭子类型文章目录类的多态与鸭子类型一、什么是多态?二、由多态带来的特性=》多态性1.什么是多态性2.多态性的使用3.多态性的好处列举python中含有这种多态性的思想的实例三、abs 模块限制子类必须重写父类的某些方法abs 模块使用小结四、鸭子类型1.什么是鸭子类型2.为什么推崇鸭子类型?3.鸭子类型的示例参考资料一、什么是多态?多态是同一类事物具有的多种形态。我国有句俗语:“龙生九子,各有不同”。这就是多态。多态是面向对象编程的重要特点之一。示例:#多态:同一类事物有多原创 2021-04-15 10:04:54 · 434 阅读 · 0 评论 -
类的组合
类的组合文章目录类的组合一.什么是类的组合二.为什么使用组合三.组合与继承的区别1.继承方式2.组合方式一.什么是类的组合组合就是, 一个类或一个类的对象中的某一个属性, 这个属性是另一个类的对象二.为什么使用组合用来解决类与类之间代码冗余的问题 (代码重用性)三.组合与继承的区别组合和继承都是有效的利用已有类的资源的重要方式, 但二者的概念和使用场景不同1.继承方式继承是一种 “是” (属于) 的关系, 诗人是人, 歌星是人, 当类之间有很多相同的之处,应该使用继承# 人类cla原创 2021-04-15 10:03:06 · 601 阅读 · 0 评论 -
类的派生
类的派生文章目录类的派生一、什么是派生二、派生类中使用父类的属性和方法(派生的三种场景)1.子类直接继承父类所有方式一: 直接使用 `self.[属性或方法]` 来调用2.子类在自己父类原有的基础之上派生成自己独有的方式二 : 指名道姓的使用父类中的方法方式三 : 通过 `super()` 调用总结:三.关于 super 调用父类方法的查找顺序super 总结一、什么是派生子类中新定义的属性的这个过程就叫做派生注意 : 当子类在使用派生属性的时候始终以自己的属性为准父类----->称为基类原创 2021-04-14 22:17:54 · 1215 阅读 · 0 评论 -
类的多继承下的菱形问题
类的多继承下的菱形问题文章目录类的多继承下的菱形问题一、类的分类二、继承原理MRO介绍`__mro__` 方法使用总结:类相关的属性查找(类名.属性,该类的对象.属性),都是参照该类的mro三、菱形继承问题介绍多继承带来的菱形问题前言:菱形问题介绍什么是菱形问题?非菱形结构四、深度优先与广度优先菱形结构查找顺序1、新式类----->广度优先2.经典类--->深度优先四、总结:多继承到底要不要用?示例:1.新式类菱形结构示例 (子类最后继承了同样的类, 都继承了 A1 和 A2), 可以看成两个原创 2021-04-14 22:16:07 · 507 阅读 · 0 评论 -
类的继承
类的继承文章目录类的继承一、继承介绍1.什么是继承?类(对象)的继承基本语法格式2.为什么要用继承?3.继承的实现4.python中的多继承在平时应用中:优点:缺点:二、属性查找顺序1.单继承背景下的属性查找2.多继承属性查找顺序三、新生类与经典类1.新生类2.经典类四、继承与抽象1.抽象2.继承继承应用:一、继承介绍1.什么是继承?继承是一种新建类的方式, 新建的类可以继承一个或多个父类, 那么这时这个新建的类就被称之为子类或派生类, 父类又被成之为基类或超类,继承的特性:子类会遗传父类原创 2021-04-14 22:12:42 · 1428 阅读 · 0 评论 -
类的封装
类的封装文章目录类的封装引入什么是封装?封装的意义为什么要使用封装?封装的原则一、隐藏隐藏介绍如何隐藏属性?隐藏属性的查找示例针对这种变形需要注意的问题:示例:二、 开放接口: 隐藏并不是目的, 定义属性就是为了使用1. 隐藏数据接口2.隐藏函数接口三、总结隐藏属性和开放接口四、封装的两个层面1.第一层面(公有 : public)2.第二层面 (私有 : private)五、示例补充 :六、特性property1.什么是 property 特性2.property作用3.property还提供了伪装设置和原创 2021-04-14 22:09:21 · 1926 阅读 · 0 评论 -
python之面向对象编程
python之面向对象编程文章目录python之面向对象编程一、对象的概念1.从“过程”过度到“对象”的概念介绍引入:了解面向过程面向过程:面向对象:面向对象的好处:2.了解“对象”之前我们的数据和功能都是分开的3.了解了“对象”以后我们把数据和功能进行整合二、类与对象前言什么是类?类与对象的关联现实世界与程序中类与对象的关系对象归类的好处三、面向对象编程类的定义与示例化类的定义`__dict__`:类的名称空间定制对象独有的特征类的示例化`__init__`方法调用类产生对象`__init__`方法总结原创 2021-04-14 22:04:11 · 846 阅读 · 1 评论