03 2020 档案
摘要:一、什么是递归? 递归是一种分而治之的一种解题思路 二、使用递归的场景 一般使用递归要下面这几个条件 1)将一个复杂的问题拆分成规模比较小的若干部分 2)每个子问题的求解思路是一模一样的 3)有递归的结束条件 实例1:找密码串 import string import random people =
阅读全文
摘要:一、安装第三方包 pip install openpyxl==2.5.4 (注意版本号) 二、代码实现 1)创建一个excel文件,并写入内容 from openpyxl import Workbook import datetime import time import locale wb = W
阅读全文
摘要:一、协程在python中常用的包 yield、greenlet、gevent、asyncio 二、创建协程 1)使用yield创建协程 import time def consumer(name): # 生成器 print("%s 要开始吃包子了!" % name) while True: baoz
阅读全文
摘要:问题1:什么叫协程? 协程(Coroutine)是线程的更小切分,又称为“微线程”,是一种用户态的轻量级线程。线程是系统级别的它们由操作系统调度;协程则是程序级别的由程序员根据需要自己调度。 问题2:协程与线程的区别? 1)线程之间需要上下文切换成本相对协程来说是比较高的,尤其在开启线程较多时,但协
阅读全文
摘要:守护线程:主线程结束,无论子线程是否执行完毕,都跟着结束 import threading import time class MyThread(threading.Thread): def __init__(self, id): super().__init__() self.id = id de
阅读全文
摘要:资源共享:在同一个进程里的线程间,资源是共享的。 1)队列共享(只要普通的队列就可以共享) from threading import Thread from queue import Queue import time def create(queue): # 储钱罐 for i in [100,
阅读全文
摘要:锁:可以保证线程同步和线程安全 1)Lock锁 方式1:Lock from threading import Thread, Lock import threading def run(lock, num): lock.acquire() # 获得锁 threadName = threading.c
阅读全文
摘要:一、在python中的一些线程相关的模块和包: _thread threading Multiprocessing 二、threading.Thread 说明 1)作用:创建线程 2)语法 # 构造方法help(threading.Thread) __init__(self, group=None,
阅读全文
摘要:问题1、单进程、线程、协程的区别? 单进程:操作系统分配资源的最小单位,是一个程序的动态执行,有各自的地址空间,不同进程中使用的变量是各自独立,且互相不能访问的,进程中的变量存在各自的地址空间中,互相禁止访问。(由操作系统调度) 线程:是cpu运行的最小单位,进程至少会有一个线程,也可以多个线程,他
阅读全文
摘要:import requests import json import string import random from multiprocessing import Pool, Manager def test_register(lock, success_Count, failure_Count
阅读全文
摘要:一、首先把需要验证的ip放到一个文件里面 二、然后执行下面这个脚本就可以了,0代表成功,1嗲表失败 import subprocess class Shell(object): def runCmd(self, cmd): res = subprocess.Popen(cmd, shell=True
阅读全文
摘要:Subprocess 模块: 作用1:它通过主进程,生成一个子进程,来执行一个操作系统命令,然后返回执行结果。这个结果可以存储到变量里,做后续使用 作用2:某个命令指向之后的结果,还可以传递给另外一个命令 在CMD中 >>> import os >>> a = os.system('dir') 驱动
阅读全文
摘要:一、进程日志 # 进程日志 import multiprocessing import logging import sys def worker(): print('I am working....') sys.stdout.flush() if __name__ == '__main__': m
阅读全文
摘要:前言:进程之间内存资源都是相互独立的,互不影响和干涉。 那么如何让进程能共享资源或通信呢?python中提供了一些方法,代码如下 1)共享队列 # 进程同步1:使用Queue实现 # 消费者与生产者模式 from multiprocessing import Process, Queue impor
阅读全文
摘要:一、锁的作用 锁的作用是:使进程产生同步,确保数据的一致性。 二、线程安全和非线程安全 a = 1 ,两个线程分别给a加一次1,理想结果是 a = 3(线程安全) 如果两个线程同时拿到a=1的状态,分别加上1,那么a = 2(非线程安全) 非线程安全转换为线程安全时,就需要在非线程安全上加上锁 三、
阅读全文
摘要:一、在python中的一些进程相关的模块和包: os.fork() (Linux) subprocess processing Multiprocessing 二、进程间的通信方式: 文件 管道(Pipes) Socket 信号 信号量 共享内存 三、Multiprocessing.Process
阅读全文
摘要:问题1:什么是进程? 把一个程序执行起来,处于执行状态的程序叫做进程。 进程里面至少有一个线程:主线程。 不同进程使用的内存资源都是相互独立的,互不影响和干涉。 进程是操作系统分配资源的最小单位。 进程肯定比线程占用的资源多一些。 问题2:什么是线程 是操作系统能够进行运算调度的最小单位。 它被包含
阅读全文
摘要:正则表达式及re模块 正则表达式常用的方法 表达式含义 re.match() 从字符串的起始位置匹配,如果字符串第一个不满足规则,则返回None re.search() 从整个字符串去匹配,找到一个就即刻返回结果,结束匹配,没有则返回None re.findall() 从整个字符串去匹配,并返回所有
阅读全文
摘要:享元模式 定义:保证共享同一状态的对象可以同时使用该共享状态的内存 作用:减少重复对象,节约系统资源 例子1: class Flyweight(object): def __init__(self, str): self.str = str def display(self): print("sho
阅读全文
摘要:外观模式 定义:把系统里面负责的功能或者接口封装到一个类或者高级接口的这种形式,称之为外观模式 class SubSystem1: def process(self): return "子功能1" class SubSystem2: def run(self, messqge): return "子
阅读全文
摘要:适配器: 定义:可使无直接联系的两个接口或者类能一起工作 方法:适配器就相当于在运来的基础上增加一层调用关系(封装)。 其他:实现适配器的方法有很多,比如说继承、多继承。 # 案例1: import datetime class AgeCalculator: # 计算年龄的接口 def __init
阅读全文
摘要:解析标签,文件如下 <book> <author>Dusty Phillips</author> <publisher>Packt Publishing</publisher> <title>Python 3 Object Oriented Programming</title> <content>
阅读全文
摘要:策略模式:定义一系列算法,把它们一一封装起来,并且使它们之间可以相互替换。此模式让算法的变化不会影响到使用算法的客户。 电商领域有个使用“策略”模式的经典案例,即根据客户的属性或订单中的商品计算折扣。 假如一个网店制定了下述折扣规则。 有 1000 或以上积分的顾客,每个订单享 5% 折扣。 同一订
阅读全文
摘要:双下划线开头和双下划线按结尾的函数称为魔法函数,魔法函数一般都是在类里面使用,在触发的时候可以写其他的逻辑# __call__:可以让对象带有函数的行为,通过()就可以调用 # 函数为什么可以使用()调用,是因为函数对象里面有__call__方法,而我们写的函数逻辑实际上是存在__call__这个方
阅读全文
摘要:在python中使用property属性有两种方法:使用@property装饰器和使用property()函数。(通过廖雪峰官网实例来对此加深认识) # property装饰器就是负责把一个方法变成属性调用 class Student(object): def __init__(self, scor
阅读全文
摘要:在类或者函数中,都可能涉及到传参的过程,传参方式分为两种:按值传和按引用传 按值传:传的是内存中保存的内容 (value),参数为不可变的按值传,如:'abc' 按引用传:传的是内容在内存中保存的地址(id),参数为可变的按引用传,如:list def func(a=[], b="abc"): a.
阅读全文
摘要:前言:当工程师和建筑师决定建造一座桥、一座塔或一栋楼时,他们会遵循一定的原则,确保其结构的完整性,现在已经有很多的可行的桥梁设计方案,根据这些方案来处理实际问题。在软件中也是如此,通过使用不同的设计模式来解决各种普遍性的问题。 观察者模式 首先在了解观察者模式的前提下,需要了解一个模块--abc 可
阅读全文
摘要:from urllib import parse url = 'https://book.qidian.com/info/1004608738?wd=123&page=20#Catalog' """ url:待解析的url scheme='':假如解析的url没有协议,可以设置默认的协议,如果url
阅读全文
摘要:# defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值 from collections import defaultdict # 默认值只能是工厂函数,比如:list,set,str等等,当key不存在是则会返回对应的[],set(),"
阅读全文
摘要:from collections import namedtuple # 初始化需要两个参数,第一个是 name,第二个参数是所有元素名字的列表,也就是说:我们不仅仅可以使用索引来访问,还可以使用这里的别名来进行访问。 name_tuple = namedtuple('name_tuple', ['
阅读全文
摘要:# Counter模块:计算元素个数 # 注意:不能处理多维的数据结构 >>> s1 = "uwerhbbsmndfwehajksdhfjsss" # 处理字符串 >>> dict(Counter(s1)) # 返回每个元素出现的个数,以字典的形式返回 {'u': 1, 'w': 2, 'e': 2
阅读全文
摘要:# 处理.zip压缩文件,如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。 import zipfile # ZipFile 读压缩文件case.zip的内容 zip_file1 = zipfile.ZipFile("D:\\case\\case.zip") # 加载压
阅读全文
摘要:关于路径处理问题:OS第三方库方法总结 import os __file__:指当前文件,带有路径的 D:/svn_auto3/test_case1/test1.py(注意这里的斜杠,和abspath的区别就是这里) # 路径操作 >>> os.chdir('D:\\') # 进入目录 # 目录切换
阅读全文
摘要:python队列的四种类型 Queue:先进先出 LifoQueue:后进先出 PriorityQueue:有限队列,级别越低,越优先 deque:双边队列 # 导入 from queue import Queue,LifoQueue,PriorityQueue from collections i
阅读全文
摘要:sys 模块 提供了一系列有关Python运行环境的变量和函数 import sys sys.argv # 获取运行 Python 程序的命令行参数。 其中 sys.argv[0] 通常就是指该 Python 程序,sys.argv[1] 代表为 Python 程序提供的第一个参数,sys.argv
阅读全文
摘要:inspect模块 对是否是模块、框架、函数进行类型检查 获取源码 获取类或者函数的参数信息 解析堆栈 # 判断模块、框架、类、函数的方法,和type返回的类型是一样的,只是这里是判断 inspect.getmodulename(path) 获取模块名称 inspect.ismodule(objec
阅读全文
摘要:functools模块 functools模块里面放了很多的工具函数,此处我们只介绍常用到的两个: partial函数(偏函数):绑定了一部分参数的函数。作用就是少传参数,更短,更简洁。 wraps函数:避免多个函数被两个装饰器装饰时就报错,因为两个函数名一样,第二个函数再去装饰的话就报错,最好是加
阅读全文
摘要:hashlib模块 是一个提供字符加密功能的模块,包含MD5和SHA的加密算法,具体支持md5,sha1, sha224, sha256, sha384, sha512等算法。 .update(msg) 参数 msg 必须要是字节型,一般有以下两种处理方式 msg = '代码小工蚁'.encode(
阅读全文
摘要:作用:参数随机数 import random # random.random() 产生大于0小于1之间的随机的小数,每次生成都不一样 >>> random.random() 0.7579544029403025 >>> random.random() 0.420571580830845 >>> ra
阅读全文
摘要:时间主要分为3个模块: time模块,datetime模块,calendar模块 1、time模块 和 datetime模块 import time, datetime #获取当前时间,并把它转换为字符串 # 方法一: >>> time <module 'time' (built-in)> >>>
阅读全文
摘要:正则表达式及re模块 正则表达式常用的方法 表达式含义 re.match() 从字符串的起始位置匹配,如果字符串第一个不满足规则,则返回None re.search() 从整个字符串去匹配,找到一个就即刻返回结果,结束匹配,没有则返回None re.findall() 从整个字符串去匹配,并返回所有
阅读全文
摘要:1、文件的打开方式 文件路径说明 相对路径: 文件与python执行文件在同一个文件夹内(当前文件夹),就不用写路径,直接写文件名就好了,不在同个文件夹内都是要用绝对路径的。 只要和运行路径拼接起来可以找到这个文件,那么就可以是用的相对路径。 绝对路径: 对文件进行右键单击,在属性里面就可以查看到文
阅读全文
摘要:模块 模块定义:模块就是一个保存python代码的文件 import :导入一个整体的模块 from :从一个模块中获取一个特定的内容 reload:在不终止python程序的情况下,重新导入模块文件内容的方法。 备注: 一般导入模块的语句都是写在文件的顶部,一个模块只需导入一次就好。 交互模式下,
阅读全文
摘要:异常: 异常是指程序中的例外,违例,影响程序正常执行的情况。 异常机制是指程序出现错误后,程序的处理方法。 当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理。 异常定义:一个try必须至少有一个except,并且当有一个except执行后,后面的except都不会再去执行 注意:ex
阅读全文
摘要:组合的原理:一个类的对象具备一个指向另外一个类的对象的属性 class People: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex class Course: def __ini
阅读全文
摘要:面向对象编程的优点:高复用,易维护,易扩展,开发效率高 类和函数的区别 函数只是提供操作数据的过程和算法,自身并不能保存数据 类不但提供了操作数据的过程和算法,它还可以保存相关的数据 概念: 类:类是一个模板,他描述这一类对象的行为和状态,类的命名使用驼峰式记法(以大写字母开头,并且后面跟的任意一个
阅读全文
摘要:1、首先python有一个自带的简单邮件传输协议(SMTP)服务器,可以用来测试 开启邮件服务的命令是:python -m smtpd -n -c DebuggingServer localhost:1025 2、邮件管理器代码: import smtplib from email.mime.tex
阅读全文
摘要:链接收集器:它可以访问网站并收集每个页面上的链接,代码如下 from urllib.request import urlopen from urllib.parse import urlparse import re import sys LINK_REGEX = re.compile("<a [^
阅读全文
摘要:import hashlib class AuthException(Exception): def __init__(self, username, user=None): super().__init__(username, user) self.username = username self
阅读全文
摘要:如果需要要内置类里面添加方法,操作如下 class ContactList(list): # 在list里面添加search方法的代码示例 def search(self, name): matching_contacts = [] for contact in self: # 模糊查询 if na
阅读全文
摘要:房地产应用: 需求:房产分类:房子(house)和公寓(Apartment) 房子的属性:面积、卧室个数、浴室个数、第几层、车库、院子 公寓的属性:面积、卧室个数、浴室个数、阳台、洗衣店出售类型:出售(Purchase)和租赁(Rental) 出售的属性:销售价格、物业费 租赁的属性:租金、公共设备
阅读全文
摘要:在说多态之前,先看下以下代码: class Animal: pass class Dog(Animal): pass class Cat(Animal): pass a = Animal() b = Dog() c = Cat() print(isinstance(a, Animal)) # Tru
阅读全文
摘要:mixin工作原理:通过继承其他类来提供额外的功能 结论:ProceInfo先去继承Info,把Info里面的属性带到了Proce,此时的self已经附带了Info的属性和方法,所以在Proce里面就有了data这个属性了,运行起来不会报错 class Info: def __init__(self
阅读全文
摘要:在项目中,我们常常会遇到最初设计的参数字段不够,导致我要修改很多代码,对于这种额外参数的情况我们改如何去处理呢?代码如下 class Contact: # 这个类里面定义了name和email两个属性 def __init__(self, name, email): self.name = name
阅读全文
摘要:继承有两种方式: 1、classname.function(self) 2、super().function() 这两种方法有何区别和弊端呢?代码如下 使用 classname.function(self) 方法来实现继承 class BaseClass: num_base_calls = 0 de
阅读全文
摘要:如何使用继承的方法来实现搜索功能?以通讯录为例子演示代码 class ContactList(list): # 首先需要拓展内置类list的方法 def search(self, name): matching_contacts = [] for contact in self: # 这里是按模糊匹
阅读全文
摘要:生成器 定义:在Python中一边循环一边计算的机制,称为生成器,生成器是一个特殊的程序,可以被用作控制循环的迭代行为,python中生成器是迭代器的一种,使用yield返回值函数,每次调用yield会暂停,而可以使用next()函数和send()函数恢复生成器,生成器遇到return 会抛出异常,
阅读全文
摘要:集合 注意: 集合是可变的,所有的操作都是改变其本身,也就是说 id(指针的存储路径)是不会改变的,只是改变了内容 集合(set)是一个无序的不重复元素的数据结构。(所以没有下标索引) 集合只有增加、删除、查询(不能用索引),没有修改的方法 可以使用大括号 { } 或者 set() 函数创建集合,但
阅读全文
摘要:%是字符串格式化的一种方式,但有个点需要注意 注意:%号后面只能接收数量相等的参数,如果我们传入的参数是一个序列的话,我们需要在后面添加一个逗号,才能实现传参的效果,否则会报错 %s 可接收任意的变量类型, %d 只能接收数字类型的参数 >>> a (1, 2) >>> 'a = %s'%(a) #
阅读全文
摘要:序列数据结构:list,tuple,str 其他数据结构:set,dict 列表 1、增删改查 注意:1、列表是可变序列,所有的操作都是改变本身,也就是说ID不会改变的,只改变了存储的内容。 2、列表是以类的形式实现的,“创建”列表实际上是将一个类实例化。 3、列表的方法大多数都是针对一维的列表有效
阅读全文
摘要:函数 函数参数:必备参数(a),默认参数(b=1)、不定长参数(*args, **kwargs) 必备参数:必传, 默认参数:可传可不传,传则覆盖 *args:元组, **kwargs:字典 func(a, *args, **kwargs) --> func(1,2,3,b=1,c=2), 2和3属
阅读全文
摘要:for while 循环语句 for一般是循环迭代对象 while 一般是跟条件判断, 一般和计数器配合使用,防止进入死循环 continue 跳出当前循环,注意continue的位子,当满足条件时,后面的代码块就不会被执行 break 打破循环 外围else 注意缩进,如果break没执行那么才会
阅读全文
摘要:1.if 条件控制 注意在写逻辑的时候是思考有哪些情况,从而写出对应的处理逻辑 但是代码运行的时候犹如一个漏斗一样,当跳出去了后面的语句也不会执行 为了保证性能我们最好是把满足多数情况写在前面,可以正常情况就可以少执行代码 注意 if 和 elif 的区别 # 根据学生成绩来评优良差等级 if a
阅读全文
摘要:>>>dir(__builtins__) # 查看python自带的方法,返回的是一个列表 >>>bool('set' in dir(__builtins__)) # 查看某个方法是否只内置的,站在列表的角度思考 >>>__builtins__.set() # 查看某个方法是否是内置的,站在方法的角
阅读全文
摘要:数学运算符 # + 可以拼接数值类 序列类型 (注意只有元素类型相同的才能相加,如 数字和数字,列表和列表,字符串和字符串) >>> a = 21 >>> b = 10 >>> a+b 31 >>> list1= [1,2] >>> list2 = [2,3] >>> list1+list2 [1,
阅读全文
摘要:在了解原码、反码、补码的前提下,先要了解什么是机器数和真值 机器数: 定义:一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器数是带有符号的,最高位存放符号:正数为0,负数为1 例如:+3 的机器数是:00000011 -3 的机器数是:10000011 真值: 定义:机器数的1000001
阅读全文
摘要:连接网络的设备功能及作用 光猫:官方名叫做光调制解调器或者单端口光端机,这个一般是由供应商提供(如电信,移动) 作用:接收光纤网络,通过拨号的方式来进行验证,然后提供网络服务,每个光猫都有一个号码,如023-6xxxxxxx,跟座机打电话类似,光纤的速度比座机要快得多。 功能:一般光猫上面有5个接口
阅读全文

浙公网安备 33010602011771号