
python
Salmon-
这个作者很懒,什么都没留下…
展开
-
关于python基础的面试题
python基础1.列表常用方法append:用于在列表末尾追加新的对象extend:可以在列表末尾一次性追加另一个序列的多个值count:用来统计某个元素在序列中出现的次数index:用来查找某个值第一个匹配项的索引的位置insert:用于将对象插入到列表中pop:删除列表的一个元素,默认是最后一个,并且返回元素的值remove:用于移除列表中某个值的第一个匹配项reverse:将列表中的元素反向存放sort:用于在原位置对列表进行排序,改变原来的列表,让其中的元素按一定顺序排列2.原创 2020-10-21 20:22:08 · 479 阅读 · 1 评论 -
倒排索引与全文检索
倒排索引一个未经处理的数据库中,一般是以文档ID作为索引,文档内容作为记录而倒排索引指的是,将单词或记录作为索引,将文档ID作为记录,这样便可以方便地通过索引来查找到其所在的文档例如:简单来说,普通的查询检索是通过文档查找关键词,而倒排索引就是通过关键词找到文档流程:将数据库中的结构化数据数据转换为非结构化数据然后将非结构化数据转化为分词结构Django使用haystackhaystack是django的开源搜索框架,该框架支持 Solr,Elasticsearch,Wh原创 2020-10-21 20:14:07 · 704 阅读 · 0 评论 -
支付宝支付原理与后端代码
支付宝支付原理1.首先,需要在支付宝的沙箱环境中,创建一个应用https://openhome.alipay.com/platform/appDaily.htm?tab=info2.然后按照官方要求生成密钥3.把生成的app公钥粘贴到沙箱环境的app中之后查看沙箱环境的账号和密码代码:1.首先建一个keys文件夹,然后建两个文件夹,用来存放app私钥和支付宝公钥app_private_key.pem app私钥-----BEGIN RSA PRIVATE KEY----- 自原创 2020-10-15 21:08:51 · 1635 阅读 · 0 评论 -
七牛云原理与python
七牛云原理七牛云后端获取token代码示例# 获取七牛云tokenclass QNYTokenView(APIView): def get(self,request): from qiniu import Auth, put_file, etag # 需要填写你的 Access Key 和 Secret Key access_key = '-TYkErL-28AVgO5k8INKyoVYEl_UhdMFBn_0q' secr原创 2020-10-14 21:44:12 · 236 阅读 · 1 评论 -
模型字段与序列化正反向查找
普通字段Course_name = models.CharField(max_length=24)一对多字段,ForeignKey,第一个参数为,对应的model模型,on_delete代表对应关系删除时,是否删除数据course_type = models.ForeignKey(CourseType,verbose_name='课程类型',on_delete=models.SET_NULL,default=None,null=True)多对多字段,第一个参数为多对多对应的model模型cours原创 2020-10-12 19:32:36 · 405 阅读 · 0 评论 -
Django中的基类
基类,指的是继承了model.Model且没有生成表,而是作为基类或公共类被其他类继承只要继承了model.Model, 就会生成一个新的表,但是,如果在Meta方法中添加abstract=True,就不会产生新的表,而是作为一个基类存放多个表共同拥有的方法和字段等from django.db import modelsclass Commen(models.Model): create_time = models.DateTimeField(auto_now_add=True).原创 2020-10-12 19:15:07 · 351 阅读 · 0 评论 -
三方登录原理及后端示例代码
原理图拿微博示例:注意,此时后端有三个接口,分别为,获取扫码url的接口,验证是否为绑定用户的接口,绑定接口注意,验证是否为绑定用户的接口并没有绑定接口的功能注册微博地址:https://open.weibo.com/回调页面是指扫码后,携带code码返回给前端的url地址,在后端的获取扫码url接口中和微博后台中一致使用微博用户code+微博开发者账号信息换取微博的认证access_token获取url接口代码class WeiboUrl(APIView):原创 2020-10-11 21:52:33 · 1912 阅读 · 0 评论 -
redis的pipline使用
redis发送数据原理Redis是建立在TCP协议基础上的CS架构,客户端client对redis server采取请求响应的方式交互。一般来说客户端从提交请求到得到服务器相应,需要传送两个tcp报文。设想这样的一个场景,你要批量的执行一系列redis命令,例如执行100次get key,这时你要向redis请求100次+获取响应100次。如果能一次性将100个请求提交给redis server,执行完成之后批量的获取相应,只需要向redis请求1次,然后批量执行完命令,一次性结果,性原创 2020-10-08 11:21:42 · 230 阅读 · 2 评论 -
Celery实现短信注册接口
介绍:1.1 celery应用举例Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,原创 2020-10-07 19:48:00 · 328 阅读 · 1 评论 -
django缓存设置与验证码
django缓存设置安装缓存模块pip install django-redis==4.12.1在settings中配置# 缓存配置CACHES = { # django存缓默认位置,redis 0号库 # default: 连接名称 "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPT原创 2020-10-06 20:44:49 · 319 阅读 · 0 评论 -
实验楼项目结构图
原创 2020-10-05 08:19:08 · 257 阅读 · 0 评论 -
Django-DRF-分页
自定义类或者全局配置class PageNum(PageNumberPagination): #每页几条数据 page_size = 3 # 查询字符串中代表每页返回数据量的参数名,默认值:None page_query_param = 'limit' # 查询字符串中代表页码的参数名,有默认值:page # page_query_param = 'page' # 一页中最多的结果条数 # max_page_s原创 2020-10-05 07:30:52 · 201 阅读 · 0 评论 -
ModelViewSet基础讲解(纯干货)
ModelViewSet是封装度最高的DRF的视图类。包含了怎删改查中的所有接口操作。它继承自GenericViewSet、ListModelMixin、RetrieveModelMixin、CreateModelMixin、UpdateModelMixin、DestoryModelMixin。!!!!!注意,因为继承关系,必须在内部定义属性,queryset和serializer_class,因此,ModelViewSet通常结合ModelSerializer使用所以,在使用ModelVi.原创 2020-09-29 19:34:32 · 7165 阅读 · 2 评论 -
CORS跨域与前后端联调思路
CORS跨域#允许所有源来跨域CORS_ORIGIN_ALLOW_ALL =True#或者设置跨域请求白名单# CORS_ORIGIN_WHITELIST = (# 'http://127.0.0.1:8080',# 'http://localhost:8080',# )#允许携带cookieCORS_ALLOW_CREDENTALS = True前后端联调思路写完视图函数,使用postman进行接口测试,保证后端接口没有问题在vue中写页面,向后端发送原创 2020-09-28 21:14:29 · 404 阅读 · 0 评论 -
Django-DRF-APIview
APIview与ModelViewSetModelViewSet是对APIView的进一步封装ModelSerializers是对Serializer的进一步封装APIview的使用在user/urls.py中添加路由urlpatterns = [ path('apiview/',views.UserInfoViewSet.as_view()), ]创建user/serializers.py写序列化器serializers.ModelSerializer 和 seri原创 2020-09-28 18:52:01 · 268 阅读 · 0 评论 -
RESTful设计规范讲解
1.什么是RESTfulREST与技术无关,代表的是一种软件架构风格(REST是Representational State Transfer的简称,中文翻译为“表征状态转移”)REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA: Res原创 2020-09-28 18:49:13 · 264 阅读 · 0 评论 -
Django--DRF操作
1.DRF初始化DRF六中常用操作1.认证2.权限3.限流4.序列化5.分页6.版本1.1安装DjangoRestFrameworkpip install djangorestframework==3.11.1pip install django-filter==2.3.8 #过滤器pip install markdown # markdown support for the browsable API1231.2在syl/settings.py中注册INSTALLED_A原创 2020-09-28 18:42:45 · 217 阅读 · 0 评论 -
django基础
web工作流程图或者可以理解为:django介绍目的:了解Django框架的作用和特点作用:简便、快速的开发数据库驱动的网站Django的优势快速开发MVT功能齐全Django学习版本: 1.11.11思考:用django还是flask开发数据驱动web网站(复杂业务逻辑)数据分析后的结果展示界面, flask快速成型应用上线, 就用djangoDjango设计模式目的: 了解什么是MVC, MTV思考: 为什么要用设计模式分工、解耦,让不原创 2020-09-25 19:06:11 · 139 阅读 · 0 评论 -
正则表达式
正则表达式re.match()第一个参数, 是需要匹配的规则第二个参数, 将要匹配的内容match 从字符串开头开始匹配,字符串开头如果匹配不到,就返回None元字符.:任意字符,换行符除外\d:任意数字\w:任意数字字母下划线\s:空白符#如果是大写的s,w,d,代表’非’匹配多个字符:单个字符 + 个数限制(量词)+:最少1个,最多无限个*:最少零个,最多无限个?:最少0个,最多1个{n}:固定n个{n,m}:最少n个,最多m个$:匹配结尾,后面不能再有其他内容g原创 2020-09-18 20:56:23 · 121 阅读 · 0 评论 -
python通信
通信IP地址与端口号ip地址是网络中电脑的唯一标识通过 IP地址 可以找到 对方的电脑通过 端口号 找到电脑上的 应用软件端口号范围: 1-65535知名端口号: 1024之前的端口号, 被众所周知的端口号动态端口号: 1024之后的端口号, 被系统动态分配的端口号查看端口号命令netstat -ano # widowsnetstat -an # Linux/mac套接字真正的应用程序中, 通过 套接字来收发数据UDP 套接字TCP 套接字发送数据,需原创 2020-09-18 20:54:37 · 198 阅读 · 0 评论 -
冒泡/选择排序与二分查找
排序冒泡排序相邻比较,逆序交换# 如果某一趟排序,没有 发送任何 交换, 证明数据已经有序, 可以结束排序def bubble_sort(alist): n = len(alist) # 列表中元素个数 # 冒泡排序, n个数字需要 排序 (n-1) 趟 for i in range(1, n): # 在每一趟排序之前,设置一个标志 flag = False for j in原创 2020-09-18 20:53:57 · 179 阅读 · 0 评论 -
python栈与队列
栈定义在同一端 插入 和 删除元素的 线性表就是栈特点先进后出,后进先出实现方式只允许在列表 的末尾添加和删除元素 注意: 在列表的首位也可以实现栈,但是时间复杂度较高,降低效率class Stack(): def __init__(self): # 初始化空列表存放元素 self.alist = [] def push(self, item): # 将item元素 入栈原创 2020-09-18 20:52:47 · 319 阅读 · 0 评论 -
python数据结构与算法
数据结构物理结构又称存储结构 顺序结构:逻辑结构相邻,物理结构也相邻 链式结构:逻辑相邻,物理不一定相邻逻辑结构 集合结构:(同属一个整体,但是每个元素之间没有关系) 线性结构:队尾元素没有直接后继,队头元素没有直接前驱 其他元素有唯一的直接前驱和后继(一对一) 树形结构:除了根元素,其他元素都有一个前驱和多个后继(一对多) 图形结构:每个元素都有多个前驱和后继(多对多) 重点:线性结构如果既是线性结构,又是链式结构,这种结构成为链表如果既是线性结构,又是顺原创 2020-09-18 20:52:19 · 136 阅读 · 0 评论 -
python装饰器
装饰器定义装饰器函数 实质 就是 闭包函数装饰器使用@装饰器函数名进行装饰# 1. 定义装饰器函数def outer(func): def inner(): print("开始新功能") func() print("结束新功能") return inner@outer # 2. 装饰器def add(): #3.被装饰函数 print("两数之和是3") add() 装饰过程:原创 2020-09-18 20:51:42 · 94 阅读 · 0 评论 -
python递归(返回、闭包)函数
函数调用函数自身,这种方式称为递归,这种函数称为递归函数递归函数的优点是定义简单,逻辑清晰,缺点是过深的调用会导致栈溢出递归函数使用过程中,需要找到不变的规律和停止递归的边界条件,因为函数自身调用自身,函数本身的结构不变,只是每次传的参数改变啦递归实现过程(扩展):利用栈的思想,先找边界条件,同时将后面的任务存起来,一直到最前面的边界条件,然后回去,每次从栈中取任务,进行计算,一直到最后一个任务取完,结果也计算完毕递归过程: 递归前进段 递归边界条件 递归返回段例子递归原创 2020-09-18 20:51:07 · 173 阅读 · 0 评论 -
python匿名函数
匿名函数,没有名字的函数,又被称为lambda函数lambda 参数:表达式参数列表:lambda关键字和 :之间的部分,需要多少个参数,就写多少个返回值: :后面的表达式结果 就是函数的返回值匿名函数的调用:f = lambda x,y,z:x+y+zr = f(1, 2, 3)print(r)匿名函数作为参数传递def func(alist): # 函数内部,再定义一个函数,判断一个数是否为回文数,如果是回文数,返回True # def f(x): #原创 2020-09-18 20:50:11 · 305 阅读 · 0 评论 -
python高阶函数
定义当一个函数 接收 另一个函数作为参数, 它就是 高阶函数示例def func(a, x, y): a(x, y) # a就是传递的 函数参数f, 执行 a 相当于 执行 fdef f(x, y): print(x + y)func(f, 1, 2) # 3, 在函数f执行过程中,输出 3四大高阶函数map(func, iterable)将 可迭代对象 中的每个值 按照 第一个参数( 函数)的 规则 依次 处理, 得到一个 新的 迭代器 对象def原创 2020-09-18 20:49:26 · 180 阅读 · 0 评论 -
python生成器
生成器 是 特殊 的迭代器特殊: 构建 方式不同查看 对象 的所有 属性 和 方法: dir()生成器 是 对 迭代器补充, 可以处理 那些 无规律 的数字实现方式函数中 具备 yield关键字,它就是生成器,此时 ,它具备__iter__方法和__next__方法yield(1.暂停执行 2.返回值)将列表推导式 的 [] 变为 (), 他就是 生成器获取生成器数据 1.利用for循环获取迭代器数据 2.利用while循环和异常捕获 3.利用list、t原创 2020-09-18 20:48:44 · 111 阅读 · 0 评论 -
python生成器
生成器 是(特殊)的迭代器特殊: 构建 方式不同查看 对象 的所有 属性 和 方法: dir()生成器 是 对 迭代器补充, 可以处理 那些 无规律 的数字实现方式函数中 具备 yield关键字,它就是生成器,此时 ,它具备__iter__方法和__next__方法yield(1.暂停执行 2.返回值)将列表推导式 的 [] 变为 (), 他就是 生成器获取生成器数据 1.利用for循环获取迭代器数据 2.利用while循环和异常捕获 3.利用list、t原创 2020-10-26 18:45:58 · 194 阅读 · 0 评论 -
python迭代
可迭代对象iterable迭代是遍历元素的一种方式定义可以被 for ... in ... 循环遍历的对象,就是可迭代对象利用模块collections判断是否可迭代 Iterable(类)自定义可迭代对象任何一个对象, 只要具备 __iter__ 魔法方法,这个对象 就是可迭代对象from collections.abc import Iterableclass MyIterable(): """ 自定义一个类, 类 具备 __iter__ 魔法方法 """原创 2020-09-11 09:37:38 · 380 阅读 · 0 评论 -
python拷贝
自定义python代码名字不能和官方的模块重名浅拷贝copy 浅拷贝 只拷贝顶层数据,其余数据拷贝时是引用关系深拷贝deepcopy深拷贝 递归性质的拷贝,所有数据完全拷贝。数据之间彼此独立,互不影响深拷贝相当于复制,复制的两个文本彼此如何修改不影响另一个...原创 2020-09-11 09:36:24 · 117 阅读 · 0 评论 -
python作用域
在python程序中创建、改变、查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域。L(在函数中定义的变量,属于局部作用域的变量,在函数外部不能使用) localE(两个函数之间的区域称之为嵌套作用域),嵌套域的变量也可以在局部作用域可以使用 enclosingG(在函数外部定义的变量,称之为全局变量)globalB(python已经定义好的变量和函数,称为内置作用域)bulit-in统称LEGB法则,确定变量名的搜索顺序优先级 局部>嵌套>原创 2020-09-11 09:35:46 · 155 阅读 · 0 评论 -
python异常处理
python中,我们通过try来捕获可能出现异常的代码,通过except来捕获异常,防止程序报错try:可能出现异常的代码except:(捕获异常)Exception(所有异常总称)as 变量:finally:(最后)原创 2020-09-11 09:34:09 · 207 阅读 · 0 评论 -
python面向对象
面向对象的方法主要是把事物给对象化,包括其属性和行为。面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)。class(定义类的关键字)类名一般采用大驼峰命名法类由类名 属性 方法构成面向对象三大特性:继承,封装,多态def(定义函数,在类中是定义方法的关键字)–init–(初始化属性或赋值) –mro–(查看子类继承顺序)object(顶级父类)–在属性名或方法名前加两个下划线变为私有属性,不能通过对.原创 2020-09-11 09:31:46 · 126 阅读 · 0 评论 -
文件操作--os模块
open(“文件名”,“访问模式”) 可以打开一个已经存在的文件,或者创建一个新的文件r (read)读w (write)写a()文件追加,如果文件存在,新内容会放在文件的结尾readline(读取一行,返回的是字符串)readlines(读取,返回的是一个列表,每一行的数据为一个列表项)close(关闭)os.rename(文件重命名)os.remove(文件删除)os.mkdir(创建文件夹)os.rmdir(删除文件夹)os.getcwd(获取当前目录)os..原创 2020-09-11 09:30:18 · 226 阅读 · 0 评论 -
python函数
内置函数len( ) 长度max()最大min ( ) 最小del( )删除变量函数函数:无参数无返回值,无参数有返回值,有参数有返回值,有参数无返回值def(定义函数) help( ) 查看函数文档说明'''def ***(*形参*)函数传参定义函数时括号内为形参调用时括号内的为实参'''return(返回值)全局变量(定义在函数外部)既可以在函数内部访问也可以在函数外部访问局部变量(定义在函数内部)只能在函数内部访问,不能在函数外部访问当全局变量和局部变量名字一样原创 2020-09-11 09:28:10 · 175 阅读 · 0 评论 -
python循环
while循环while:三步:初始值,循环条件,步长循环嵌套(外层循环代表行数,内层循环代表列数,外层循环一次,内层循环一轮)-2d代表左对齐 2d代表右对齐end=""(不换行,可加空格)for循环for格式:(for 临时变量 in ****)range(函数,代表循环次数,包头不包尾)(第一个数代表起始值,第二个数代表终止,第三个代表步长)break(结束循环)continue(跳过本次循环继续执行下一次)pass(空语句,占位作用)...原创 2020-09-11 09:27:22 · 163 阅读 · 0 评论 -
python格式化输出与运算符
匹配整型:%d匹配字符串 :%s匹配浮点型:%f (默认6位 ,%.*f调整小数点之后位数)算术运算符:+ - * / %(取余数) //(取整) **(幂)赋值运算符:=(赋值) 复合赋值运算符:+= -= *= /= %= //= **=条件判断if(如果)else(否则)比较运算符< == != >= <=逻辑运算符and(和)not(不能)or(或)...原创 2020-09-11 09:26:19 · 155 阅读 · 0 评论 -
python数据类型
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2020-09-11 09:24:29 · 155 阅读 · 0 评论