python
文章平均质量分 79
初心ya
这个作者很懒,什么都没留下…
展开
-
装饰器实现计算函数的运行时间
装饰器实现计算函数的运行时间何为装饰器装饰器其实就是一个函数,该函数有一个参数(函数类型),返回一个闭包在返回的闭包中调用传递进来的函数,然后在调用函数的前后就可以添加内容作用:当需要改变一个函数原有的功能时,但是不想/不能改变原来的函数,可以通过装饰器解决计算函数执行时间的装饰器import functoolsimport timedef run_time(fn): @functools.wraps(fn) def wrapper(*args, **kw):原创 2020-06-18 18:19:16 · 1073 阅读 · 0 评论 -
Python常见的数据类型的底层实现
数据类型决定数据在内存中所占用空间大小一体式结构与分离式结构的区别:如果增加元素超过了列表的最大存储量时,则需要新建一个数据区一体式结构若想更换数据区,则要整体更改分离式结构则只需要更改表信息区中的数据区链接地址即可,顺序表对象不变list的基本实现技术Python标准类型list就是一种元素个数可变的线性表,可以加入和删除元素,并在各种操作中维持已有元素的顺序(即保序),而且还具有以下行为特征:基于下标(位置)的高效元素访问和更新,时间复杂度应该是O(1);采用顺序表技术,表中转载 2020-06-09 18:51:52 · 421 阅读 · 0 评论 -
Python 判断链表是否有环
问题描述给定一个链表,如何判断该链表是否成环?解题思路首先,一听到这个问题,脑子一下子映出下面这幅链表成环的图:快慢指针为啥在有环的链表中为啥一定会相遇因为快慢指针的差距不管有多少 他们速度不同在环形结构上会逐渐缩小一步直到相遇代码实现class ListNode: def __init__(self, val): self.val = val self.next = None# 借助辅助空间# class Solution:#原创 2020-06-09 18:44:07 · 553 阅读 · 0 评论 -
Python常用排序算法
目录:冒泡排序选择排序插入排序快速排序堆排序归并排序冒泡排序它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。原理:比较两个相邻的元素,将值大的元素交换到右边思路:依次比较相邻的两个数,将比较小的原创 2020-06-09 18:09:30 · 454 阅读 · 0 评论 -
vue+django——webshell的实现
Webshell“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为通过网站端口对网站服务器的某种程度上操作的权限。一方面,webshell被站长常常用于网站管理、服务器管理等等,根据FSO权限的不同,作用有在线编辑网页脚本、上传下载文件、查看数据库、执行任意程序命令等。另一方面,被入侵者利用,从而达到控制网站服务器的目的。这些网页脚本常称为WEB脚本木马,比较流行的asp或php木马,也有基于.NET的脚本木马与JSP脚本木原创 2020-06-02 18:22:53 · 1261 阅读 · 0 评论 -
什么是Oauth2.0,Oauth2.0的四种授权模式
Oauth2.0本身:Oauth2.0是一种授权协议,当然也归属为安全协议的范畴,在实际执行的时候就是保护互联网中不断增长的大量WEB API的安全访问。OAuth2.0共包含四种角色,分别是资源所有者、第三方应用(也称为客户端client)、授权服务器和资源服务器。如下图所示,某公司A开发了一个微信小程序(第三方应用)可以帮助我(资源所有者)美化微信服务器(资源服务器)上面的头像,我在用这个微信小程序开发的美化头像功能的时候,首先要给微信小程序授权(授权服务器),这个微信小程序才能访问我的头像,实际上访原创 2020-06-01 16:23:15 · 1941 阅读 · 0 评论 -
Python知识点——TCP和UDP的区别
相同点UDP协议和TCP协议都是传输层协议。TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达原创 2020-05-31 16:42:59 · 395 阅读 · 0 评论 -
Python知识点——正则表达式
目录1. 正则表达式基础1.1 简单介绍1.2. 数量词的贪婪模式与非贪婪模式1.3. 反斜杠的困扰1.4. 匹配模式2. re模块2.1. 开始使用re2.2. Match2.3. Pattern1. 正则表达式基础1.1 简单介绍正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语原创 2020-05-31 16:10:36 · 361 阅读 · 0 评论 -
Python知识点——文件的相关操作
python文件的相关操作写入操作-writef = open('test.txt','w') # w是写的权限f.write('test...') # write写入f.close()# 运行结果# 在你当前目录创建一个test.txt文件里面的内容就是test... test...读取数据-readf = open('老婆美美哒.txt','r') # r是读的权限conition = f.read() # read读取 print(conition)原创 2020-05-31 15:44:50 · 334 阅读 · 0 评论 -
Python基础知识点——高阶函数
高阶函数1、 lambda基本使用lambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。格式:lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号,之后是一个表达式。f = lambda x,y,z:x+y+zprint(f(1,2,3)) # 6my_l原创 2020-05-31 15:16:18 · 213 阅读 · 0 评论 -
Python基础知识点——上下文管理
上下文管理1、什么是with语句with是一种上下文管理协议,目的在于从流程图中把 try,except 和finally关键字和资源分配释放相关代码统统去掉,简化try….except….finlally的处理流程。所以使用with处理的对象必须有enter()和exit()这两个方法 1. with通过enter方法初始化(enter方法在语句体执行之前进入运行) 2. 然后在exit中做善后以及处理异常(exit()方法在语句体执行完毕退出后运行)2、with语句使用场景wi原创 2020-05-31 14:54:44 · 187 阅读 · 0 评论 -
Python基础知识点——垃圾回收机制
python垃圾回收机制1. 引用计数:当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1.当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉。2. 标记-清除:它分为两个阶段:第一阶段是标记阶段,GC会把所有的活动对象打上标记,第二阶段是把那些没有标记的对象非活动对象进行回收。对象之间通过引用(指针)连在一起,构成一个有向图从根对象(rootobject)出发,沿着有向边遍历对象,可达的(reachable原创 2020-05-31 14:47:46 · 181 阅读 · 0 评论 -
Python基础知识点——深拷贝、浅拷贝
预备知识一——python的变量及其存储python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身不管多么复杂的数据结构,浅拷贝都只会copy一层。 理解:两个人公用一张桌子,只要桌子不变,桌子上的菜发生了变化两个人是共同感受的。copy模块用于对象的拷贝操作。该模块只提供了两个主要的方法:copy.copy与copy.deepcopy,分别表示浅拷贝与深拷贝浅copy与deepcopy浅拷贝: 不管是多么复杂的数据结构,原创 2020-05-31 14:41:54 · 118 阅读 · 0 评论 -
Python基础知识点——面向对象
目录面向对象1. 方法2. 特性3. 属性4. 反射: hasattr、getattr、setattr 和 delattr面向对象简介:面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。其实面向对象也很简单,却也很难,熟能生巧。你需要了解类和对象,要学会定义类,创建对象。特点:类(C原创 2020-05-31 14:34:51 · 380 阅读 · 0 评论 -
Python基础知识点——装饰器、生成器、迭代器
目录1. 装饰器2.迭代器3.生成器1. 装饰器介绍:装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。装饰器的概念:装饰器实际上就是一个函数有2个特别之处,参数是一个函数。返回值是一个参数装饰器的简单理解:实际上就是为了给一个程序添加功能,但是该程序已经上线或者已被使用, 那么就不能大批量的修改源码,这样不现实,因此就产生了装饰器。注意点:不能修原创 2020-05-29 15:20:31 · 548 阅读 · 0 评论 -
Python基础知识点——进程、线程、协程
目录:1. 进程2. 线程3. 协程1. 进程进程的定义进程是资源分配最小单位一个运行起来的程序就是一个进程什么是程序(程序是我们存储在硬盘里的代码、文件)当我们双击图标,打开程序的时候,实际上就是通过I/O操作(读写)内存条里面内存条就是我们所指的资源进程之间内存独立,不能相互访问进程定义拓展内容:程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,这种执行的程序就称之为进程程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次原创 2020-05-29 12:46:28 · 312 阅读 · 0 评论 -
vue+Django实现excel文件下载
vue端<template> <div id="home"> <a :href="'http://localhost:8000/download/?way_id=' + id"> 下载记录</a></div></template><script> export default { name: 'home', data() { r原创 2020-05-28 13:08:14 · 936 阅读 · 0 评论 -
Django——实现根据时间间隔自动生成温度
直接上代码# 记录间隔import datetimeimport randomimport timegap = 5 # 单位分temp_list = []# 声明当前时间time_start = datetime.datetime.now()print(time_start)# 间隔时间time.sleep(10)# 声明结束时间time_end = datetime.datetime.now()print(time_end)# 计算时间间隔gap_time = ((ti原创 2020-05-25 22:06:16 · 399 阅读 · 0 评论 -
通过 经纬度 获取 地理位置(Python、高德地图)
通过经纬度获取高德地图地理位置的思路1. 在网址https://lbs.amap.com/dev/申请一个Web服务开发的Key,如下图所示:下面直接上代码import requestsdef geocode(location): # 参数内容 可以写成字典的格式 parameters = {'output': 'json', 'key': '74be80caf932ea23afdaff4cf43929e5', 'location': location,原创 2020-05-25 21:54:21 · 2757 阅读 · 2 评论 -
使用Python3.7+Django2.0.4配合vue.js2.0的组件递归来实现无限级分类(递归层级结构)
所谓的无限极分类是啥?其实简单点说就是一个人类可以繁衍出多个后代,然后一个后代又可以分另外多个后代这样无限繁衍下去(可以想象神奇动物在哪里2里面莱斯特兰奇的家族族谱),就好象linux系统你可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建一些文件夹一样,随后使用tree命令就可以查看文件夹目录层级。那么这种层级结构也成为树结构在日常的开发需求里也是很常见的,比如美多商城系统的商品分类,课程的目录章节,以及以及论坛里的帖子回复等等,本次我们后台利用Django来写一个能够返回转载 2020-05-12 23:03:21 · 244 阅读 · 0 评论