随笔分类 - python
摘要:一、Type介绍 在Python中一切皆对象,类它也是对象,而元类其实就是用来创建类的对象(由于一切皆对象,所以元类其实也是一个对象)。 先来看这几个例子: 例1: In [1]: type(12) Out[1]: int 通过 type 可以查看对象的类型,也就是查看对象是那一类的,这里可以看出来
阅读全文
摘要:快速排序是一种常用的排序算法,比选择排序快的多。在之前的我随笔中也写过关于快速排序的算法,也可以看一下和现在的区别python实现快速排序 - Mr-Yang` - 博客园 (cnblogs.com)。 在看快速排序之前,要先了解一下递归,对于递归我之前的文章中也有提到python递归函数 - Mr
阅读全文
摘要:首先了解一下协程,协程的本质就是一条线程,多个任务在一条线程上来回切换,协程的所有切换都是基于用户,只有在用户级别才能感知到的 IO 才会用协程模块来规避,在 python 中主要使用的协程模块是 asyncio,并且基于 async 和 await 关键字的协程可以实现异步编程,这也是目前 pyt
阅读全文
摘要:这篇文章我们来介绍一下 super,我相信大部分的人使用 super 都是使用这种方式; # 就是我有一个 class 比如说是 Male,然后继承另外一个 class 比如是 Person,然后我在这个 Male 也就是它的子类的 init 函数里面用 super().__init__() 来调用
阅读全文
摘要:一、二叉树 根节点:树上的节点 左叶子节点 右叶子节点 子树 完整的子树 一个根节点,左右叶子节点组成 不完整的子树 根节点:左叶子节点 根节点:右叶子节点 根节点: 特点:每一个节点都可以作为某一棵子树的根节点 class Node: def __init__(self, item): self.
阅读全文
摘要:一、冒泡排序 原理: 比较相邻的元素。如果第一个比第二个大就交换他们两个 每一对相邻元素做同样的工作,直到结尾最后一对 每个元素都重复以上步骤,除了最后一个 第一步: 将乱序中的最大值找出,逐一移到序列最后的位置 alist = [3, 5, 9, 2, 1, 7, 8, 6, 4] def bub
阅读全文
摘要:一、python连接数据库 基本格式: import pymysql db = pymysql.connect(host='127.0.0.1', # 数据库IP user='root', # 用户 password='123', # 密码 database='staff') # 数据库 # 使用
阅读全文
摘要:一、进程池、线程池 什么是池? 要在程序开始的时候,还没提交任务先创建几个线程或者进程 放在一个池子里,这就是池。 为什么要用池? 如果先开好进程/线程,那么有任务之后就可以直接使用这个池中的进程或线程了 并且开好的线程或者进程会一直存在池中,可以被多个任务反复利用,这样极大的减少了开启或关闭调度线
阅读全文
摘要:一、守护线程 主线程会等待子线程结束之后才结束,因为主线程结束进程就会结束,进程结束就会回收资源,而线程是进程的资源。 守护线程随着主线程的结束而结束 守护线程会在主线程的代码结束之后继续守护其他子线程,因为其他子线程未结束,主线程就未结束主进程也意味着未结束,那么守护线程就还没结束。 守护进程:会
阅读全文
摘要:一、异步阻塞 1、并没有按照执行顺序等待结果 2、而是所有的任务都在异步执行着 3、但是我要的结果又不知道谁的结果先来,谁先结束我就先取谁的结果 很明显的异步,大家都相互执行着(异步过程),谁先结束我就先拿谁的结果,而我等待的过程就是一个阻塞过程,整体就是一个异步阻塞。 使用生产者消费者模型举例:
阅读全文
摘要:一、守护进程 守护进程会随着主进程的代码结束之后在结束,而不是等待整个主进程结束(因为主进程要回收资源) 主进程的代码什么时候结束,守护进程就什么时候结束,和其他子进程执行进度无关 主进程会等待所有的子进程结束,是为了回收子进程的资源 注意:进程之间是互相独立的,主进程代码运行结束,守护进程随即终止
阅读全文
摘要:一、multiprocessing模块 在python中大部分情况需要使用多进程,python提供了multiprocessing模块。 multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件。 与线程
阅读全文
摘要:一、进程的三状态 1、等待态(阻塞):等待某个事件的完成; 2、就绪态(就绪):等待系统分配处理器以便运行; 3、运行态(运行):占有处理器正在运行; 运行态——>等待态:往往是由于等待外设,等待资源分配或等待人工干预而引起的。 等待态——>就绪态:则是等待的条件已满足,只需要分配到处理器后就能运行
阅读全文
摘要:一、socketserver实现并发 tcp协议的socket是只能和一个客户端通信的,使用socketserver可以实现和多个客户端通信,他是在socket的基础上进行的封装,底层还是调用的socket。 socket是底层模块 socketserver是基于socket完成的 socketse
阅读全文
摘要:一、Socket(套接字) Socket又称为套接字,它是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。 Socket也是一个模块。我们通过调用模块中已经实现的方法建立两个进程之间的连接和通信。 1、套接字的工作流程(基于TCP和UDP两个协议) TCP(Transmission C
阅读全文
摘要:一、类的两个装饰器 **@classmethod:**把类中的绑定方法变成一个类方法,cls 就等于类名 有什么用? 1、在方法中任然可以引用类中的静态变量 2、可以不用实例化对象,就直接用类名在外部调用这个方法 什么时候用? 1、定义了一个方法,默认传 self ,但这个 self 没
阅读全文
摘要:一、super进阶 **在多继承中:**严格按照mro顺序来执行 super是按照mro顺序来寻找当前类的下一类 在py3中不需要传参数,自动就帮我们寻找当前类的mro顺序的下一个类中的同名方法 在py2中的新式类中,需要我们主动传递参数super(子类的名字,子类的对象). 函数名() 这样才能够
阅读全文
摘要:一、类的继承顺序 只要继承object类就是新式类 不继承object类的都是经典类 在python3 中所有的类都继承object类,都是新式类 在python2 中不继承object的类都是经典类 继承object类的就是新式类 经典类:在py3中不存在,在py2中不主动继承object类
阅读全文
摘要:一、面向对象的继承 面向对象的三大特性:继承,封装,多态 继承: 字面意思:子承父业,合法继承家产,就是如果你是独生子,不出意外,你会继承你父母所有家产,他们所有财产都会由你使用。 官方说法:如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A
阅读全文
摘要:一、类的空间问题 对象的属性不仅可以在__init__里面添加,还可以在类的其他方法或者类的外面添加。 class Person: def __init__(self, name, sex): self.name = name self.sex = sex def ponder_over(self,
阅读全文