
python
俞泰鑫
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python 将一个类的实例存储到另一个类的属性中去
'''为孩子买一个玩具LittlePony玩具有尺寸(little middle large)玩具能唱歌(lalala)玩具能说话(hello my name is LittlePony)玩具有生产厂家(生产厂家属性)生产厂家有email, phone, address还能给生产厂家打电话查询真伪'''class LittlePony: def __init__(self, size, color): self.size = size self.原创 2021-02-01 17:50:00 · 879 阅读 · 2 评论 -
python封装 私有成员、@property和@setter
私有成员作用: 向类外提供必要的功能,不必要的隐藏(隐藏实现的细节),用户就无法从外面访问这个成员了做法: 命名使用双下划线开头(名称被修改为_类名__成员名)#定义一个Wife类class Wife: def __init__(self,name,age): self.name = name self.__age = age #私有属性 #获取年龄 def get_age...原创 2020-03-27 12:31:18 · 454 阅读 · 0 评论 -
python 实现单例模式
单例模式:确保一个类只有一个实例,并且提供一个访问该实例的全局访问点作用:只生成一个实例对象,减少了对系统资源的开销,当一个对象的产生需要比较多的资源,如读取配置文件,产生其他依赖对象时,可以产生一个单例对象,然后永久驻留在内存中,从而极大的降低开销应用:使用框架时只加载一次配置文件scrapy框架中管道文件与数据库建立连接和断开连接只执行一次模型示例#模型示例class ...原创 2020-03-24 14:54:24 · 250 阅读 · 0 评论 -
python time模块时间戳转字符串格式时间
import time#获取当前utc时间戳now_time = time.time() #将时间戳转为元组tuple_time = time.localtime(now_time)#将时间元组转为字符串格式时间time = time.striftime('%y-%m-%d %H:%M:%S',tuple_time)...原创 2020-03-21 12:48:35 · 597 阅读 · 0 评论 -
python操作redis 哈希
python操作redis 哈希散列import redis#连接redisr = redis.Redis(host='localhost',port=6379,db=0)user_dict = {'name':'步惊云','attack':'绝世好剑','girlfrend':'楚楚'}#增#设置多个字段: hmset key field value field valuer...原创 2020-02-21 12:12:04 · 237 阅读 · 0 评论 -
python 找出两个链表中第一个公共节点(两个链表如果有一个节点相同,后面的节点会都相同)
'''前提:两个链表如果有一个节点相同,则后面的所有节点肯定也一样思路:使用栈的特性(从尾节点开始),循环判断栈尾元素是否相同,相同则pop()link_list1:100->200->300->400->Nonelink_list2:666->888->300->400->None'''class Node: def __init__...原创 2020-02-14 11:48:49 · 451 阅读 · 0 评论 -
python 删除链表中重复的结点
'''在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,并链表头指针,例如,链表 1->2->3->3->4->4->5,处理为 1->2->3->4->5思路:链表是递增的,直接对链表用指针取值-判断,复合不重复条件的保留,不符合条件的去除情况1:head.vale != head.next.val...原创 2020-02-14 11:01:23 · 393 阅读 · 0 评论 -
python 字符串循环左移
字符串序列 s = ‘abcXYZdef’,要求输出循环左移3位后的结果,即 ‘XYZdefabc’'''字符串切片和字符串相加'''class Solution: def left_k_string(self,string,k): #拿出左边要切出来的字符串 left_s = string[:k] #拿出剩下的字符串 right_s = string[k:] ...原创 2020-02-14 10:02:55 · 1671 阅读 · 0 评论 -
python 字符串反转
反转:‘I am a student’'''先split(),然后reverse(),再join()'''class Solution: def reverse_sentence(self,fish): fish_list = fish.split(' ') fish_list.reverse() return ' '.join(fish_lsit)if __name__...原创 2020-02-14 09:52:17 · 247 阅读 · 0 评论 -
python 字符串替换
实现将字符串中的 空格 都替换成 %20class Solution: def replace_space(self,s): return s.replace(' ','%20')if __name__ == '__main__': s = Solution() string = 'We Are famliy' result = s.replace_space(string)...原创 2020-02-14 09:42:36 · 272 阅读 · 0 评论 -
python itsdangerous模块 加密与解密
itsdangerous模块常用于向未知环境中发送数据时使用from itsdangerous import TimedJSONWebSignatureSerializer as Serializer from itsdangerous import SignatureExpired #用于超时处理异常#实例化:Serializer(密钥,过期时间),密钥自己提供serializer =...原创 2020-01-26 13:44:20 · 336 阅读 · 0 评论 -
python 装饰器
函数装饰器是指装饰的是一个函数,传入的是一个函数,返回的也是一个函数的函数语法def 装饰器函数名(参数): 语句块 return 函数对象@装饰器函数名def 函数名(形参列表): 语句块...原创 2020-01-06 14:25:52 · 148 阅读 · 0 评论 -
python外部嵌套作用域Enclosing 与 闭包
外部嵌套作用域示例def fun01(): a = 10 def fun02(): print(a)fun01() #不会打印出adef fun01(): a = 10 def fun02(): print(a) nonlocal a a = 200 #需要加nonlocal才能更改a fun02() #执行fun02() print(a)fun01...原创 2020-01-06 12:46:53 · 447 阅读 · 0 评论 -
python 内置高阶函数
class Enemy: def __init__(self,name,hp,atk,duration): self.name = name self.hp = hp self.atk = atk self.duration = durationenemy_list = [ Enemy('玄冥二老',86,80,120), Enemy('成昆',0,0,150),...原创 2020-01-06 11:16:12 · 219 阅读 · 0 评论 -
python函数式编程
定义函数可以赋值给变量,赋值后变量绑定函数允许将函数作为参数传入另一个函数(因为python支持将一个函数赋值给变量(参数也是变量))允许函数返回一个函数代码'''函数式编程'''def fun01(): print('fun01执行啦')#1. 将函数赋值给变量a = fun01a() #通过变量调用函数def fun02(): print('fun02执行咯...原创 2020-01-05 13:04:19 · 123 阅读 · 0 评论 -
python 生成器和yield语句
生成器生成器是可以动态(循环一次计算一次返回一次)提供数据的可迭代对象(所以属于可迭代对象,即有__iter__()和__next__())不必创建容器存储完整的结果,而节省内存空间(延迟/惰性操作)生成器函数中含有yield语句,返回值为生成器对象传统方式迭代和生成器对比定义函数,获取列表中所有偶数list01 = [4,54,65,6,76,87,9]#传统方式def g...原创 2019-12-29 12:07:01 · 231 阅读 · 0 评论 -
python range()原理
'''定义MyRange类,实现下列功能for item in MyRange(999999999999999999): print(item) #0 1 2 3 4 .......999999999999999999'''class MyRangeIterator: def __init__(self,stop): self.__start = -1 self.__stop ...原创 2019-12-29 11:42:57 · 1002 阅读 · 0 评论 -
python迭代原理
python迭代原理python中迭代的条件: 对象有__iter__()方法,就可以迭代list01 = [10,20,15,76,28]##python中for循环可以循环获取可迭代中的每个元素#for item in list01:# print(item)#原理:有__iter__()方法的对象可以变成迭代器,迭代器有__next__()方法可以一步步拿出元素iter...原创 2019-12-29 10:54:12 · 327 阅读 · 0 评论 -
python socket并发模型 --非阻塞IO
设置将原本阻塞io变为非阻塞io方法1:sockfd.setblocking(bool)方法2:sockfd.settimeout(sec)from socket import *from time import ctime,sleepf = open('log.txt','a') #日志文件s = socket()s.bind('0.0.0.0',8888))s.listen...原创 2019-12-24 16:36:10 · 278 阅读 · 2 评论 -
线性模型
线性模型函数没有高斯项可看做线性方程线性预测假设一组数据符合一种线型规律,那么就可以预测未来将会出现的数据。原创 2019-12-21 14:22:11 · 215 阅读 · 0 评论 -
python 测试 进程与线程 执行效率对比(io与计算程序)
#计算密集型程序:共执行2100万次加法运算def count(x,y): c = 0 while c < 7000000: x += 1 y += 1 c += 1#io密集型程序,写读各170万次,无阻塞阻塞,预计python多线程效率不高(由于分配给多线程多个cpu内核,解释器需要在多核间来回切换执行,可能效率比单线程(单进程还低)def io(): writ...原创 2019-12-09 19:18:42 · 256 阅读 · 0 评论 -
python 基于os.fork()多进程的tcp通信并发模型
服务端'''1.创建监听套接字2.循环等待客户端连接3.客户端连接创建新的进程为客户端服务4.元进程继续等待其他客户端连接5.客户端退出,对应的进程也销毁'''from socket import *import osimport signal#全局变量:有一定特殊含义,或者多个函数都要使用的变量,定义为全局变量HOST = '0.0.0.0'PORT = 8888A...原创 2019-12-09 10:41:44 · 419 阅读 · 0 评论 -
python struct模块与网络字节串
作用将一组简单数据(字符串,整型等)打包,转为bytes格式发送,或解析一组bytes格式数据可让python与其他编程语言进行交互接口Struct(fmt)#生成结构化对象#参数:fmt 定制的数据结构,与c-type的对应关系,根据sturct表st.pack(v1,v2,v3…)#将一组数据按指定格式打包转换为bytes#参数:要打包的数据#返回值:bytes字...原创 2019-12-07 18:48:27 · 417 阅读 · 1 评论 -
python 函数传参修改可变数据类型和不可变类型的机制
如果向函数传递一个可变的类型(经常是列表),函数内部修改可变对象,函数执行后,修改原列表的值,可以不用返回值也能拿到结果,所以涉及对函数外部原有列表相关的操作(insert()等),不用return,因为直接在原列表中改了,若在新的列表中操作,就需要return可变类型:列表、字典、集合不可变类型:数值型、布尔型、None、字符串、元组、固定集合示例1:a01 = ['孙悟空']a02 ...原创 2019-12-05 15:07:39 · 894 阅读 · 0 评论 -
python 列表使用注意事项
1. 删除元素问题删除列表的元素,一定要倒序删除因为后边的元素会自动的覆盖到上一个被删除的元素的位置上,如果此时for循环正向运行,正好会掠过这个往前移的元素,继续往下走。会造成遍历的遗漏list01 = [3,45,8,12,36,7,3]for item in list01: if item %2: list01.remove(item)print(list01) #打印结果为...原创 2019-12-05 13:01:49 · 646 阅读 · 0 评论 -
基于顺序表的队列、双端队列数据结构 --python描述
class Queue: '''队列''' def __init__(self): self.__list = [] def enqueue(self,item): '''往队列中添加一个item元素''' self.__list.append(item) #尾部添加,顺序表的时间复杂度为O(1) #或者 #self.__list.insert(0,item) #头...原创 2019-11-27 19:29:34 · 174 阅读 · 0 评论 -
用顺序表实现栈 --python描述
用顺序表来实现栈的功能class Stack(object): '''栈''' def __init__(self): #初始化一个顺序表来作为栈的容器,在python中可以是一个空列表 self.__list = [] def push(self,item): '''添加一个新的元素item到栈顶''' #对顺序表的操作,操作尾部的时间复杂度是O(1),所以使用appen...原创 2019-11-27 18:29:36 · 218 阅读 · 0 评论 -
单向循环链表 --python描述
单向循环链表的最后一个节点会指向第一个节点class SingleLinkList(object): '''单向循环链表''' #构造一个单向循环链表 def __init__(self,node=None): self.__head = node #初始化时如果真传了一个节点,该节点既是第一个节点也是最后一个节点,所以它得指向自己 if node: node.next ...原创 2019-11-27 17:58:33 · 159 阅读 · 0 评论 -
python面向对象 封装继承多态 示例
需求定义一个图形管理器保存所有图形提供计算所有图形总面积的功能如能够计算:圆形 pi*r**2,矩形 长 * 宽要求增加新图形时,不影响管理器代码#定义一个图形管理器类class GraphicManager: def __init__(self): #存放所有图形 self.__list_grtaphic = [] #功能:让用户能看见这些图形类别,只读 @prop...原创 2019-11-27 14:42:28 · 467 阅读 · 1 评论 -
双向链表 --python描述
概念准备前驱节点:某个节点之前的那个节点后继节点:某个节点之后的那个节点双向链表的第一个结点,是没有前驱节点的,指向None双向链表的最后一个节点,是没有后继节点的,指向None每个节点有三个区域:prev区域保存前驱节点的地址指向前驱节点,elem区域保存数据item,next区域指向后继节点保存后继节点地址继承双向链表的判空is_empty,长度length,遍历travel,搜...原创 2019-11-26 14:50:15 · 182 阅读 · 0 评论 -
python 封装、继承与开闭原则
封装示例代码链接: https://blog.youkuaiyun.com/god_yutaixin/article/details/102766835继承从编码角度讲,父类必须写在子类的前面,子类才能找到它从设计角度讲,肯定是将程序封装成一个个子类,然后再根据需要,把子类中的共性,抽象出一个父类示例1#父类class Person: def __init__(self,name): se...原创 2019-11-26 13:32:38 · 744 阅读 · 1 评论 -
python 内建模块queue -- 常用于多线程爬虫的队列
防止阻塞的方法方法1:使用timeout,时间到了就抛出异常,此时捕获异常。常用于多级页面的抓取from queue import Queue#创建队列q = Queue()while True: try: url = self.q.get(block=True,timeout=3) #请求+解析+处理数据的代码 except Exception as e: br...原创 2019-11-20 16:42:15 · 160 阅读 · 0 评论 -
python爬虫爬百度贴吧网页流程
实现步骤查看是否为静态页面右键 - 查看网页源代码 - 搜索数据关键字找URL查询字符串规律获取网页内容提取所需数据保存(本地文件、数据库)class TiebaSpider(object): def __init__(self): pass...原创 2019-11-14 20:00:23 · 386 阅读 · 0 评论 -
python 文件操作
python 文件操作1.打开文件file_object = open(file_name, access_mode='r', buffering=-1) #功能:打开一个文件,返回一个文件对象。#参数:file_name : 文件名; (file_name可以写绝对/相对路径) #access_mode: 打开文件的方式,默认为 r #buffering 1表示...原创 2019-11-14 19:21:36 · 359 阅读 · 0 评论 -
python 进程间通信方式 --共享内存
python 进程间通信方式 --共享内存通信原理特点语法通信原理在内存中开辟一块空间,进程可以写入内容和读取内容完成通信,但是每次写入内容会覆盖之前内容(每次从首地址操作),不能同时保留多次内容,只能存一个内容。特点效率最高的通信方案只能存放一个数据每一次的写入都从地址某一个固定的起始位置开始并覆盖原内容语法...原创 2019-11-14 11:03:45 · 2034 阅读 · 0 评论 -
python 进程间通信方式 -- 消息队列
python 进程间通信方式 -- 消息队列1.通信原理在内存中建立队列模型,进程通过队列将消息存入,或者从队列取出完成进程间通信。2.语法from multiprocessing import Queue#创建队列对象,参数:最多存放消息个数,返回值:队列对象q = Queue(maxsize=0)#put是写操作,向队列存入消息#data是要存入的内容#block设置是否...原创 2019-11-14 10:17:12 · 905 阅读 · 1 评论 -
python 进程间通信方式 -- 管道
python进程间通信方式 -- 管道也是一种IO读写操作:和内存进行交互'''语法:from multiprocessing import Pipe#创建管道fd1,fd2 = Pipe(duplex = True)参数:默认表示双向管道,如果为False表示单向管道(一个进程只负责写,一个进程只负责读,否则一个进程既有读又有写,可能出现堵塞)返回值(其实是文件描述符):表示管...原创 2019-11-14 09:30:06 · 651 阅读 · 0 评论 -
python操作redis分布式锁
python操作redis分布式锁django 主项目下views层代码前提:数据库中有数据表User,数据表中有字段username,score启动了两个django客户端,端口分别为8000,8001,用户模拟分布式处理用户请求主路由绑定test(request)视图函数from django.http import JsonResponsedef test(request)...原创 2019-11-13 20:37:15 · 1068 阅读 · 0 评论 -
python 线程同步互斥方式 -- 线程event(事件))和线程锁
python 线程锁语法from threading import Locklock = Lock() #创建锁对象lock.acquire() #上锁,若lock已经上锁再调用会阻塞lock.release() #解锁with lock: #上锁(代码执行完自动解锁)示例from threading import Thread,Locka = b =0#创建锁对象lock...原创 2019-11-13 19:17:54 · 879 阅读 · 0 评论 -
python自定义线程类
python自定义线程类import threading import Thread#继承自Thread父类class Myclass(Thread): # def __init__(self,target=None,args=(),kwargs={}): super().__init__() self.target = target self.args = args ...原创 2019-11-13 17:15:51 · 930 阅读 · 4 评论