
Python
文章平均质量分 51
二_月
这个作者很懒,什么都没留下…
展开
-
python subprocess使用总结
一、subprocess以及常用的封装函数运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要...转载 2019-03-12 14:04:25 · 1066 阅读 · 0 评论 -
flask使用第三方云通讯平台时,出现{'172001':'网络错误'}解决方法
问题描述:flask使用第三方云通讯平台时,出现{'172001':'网络错误'} 解决方法:在sms.py文件中添加如下代码import ssl# 取消证书验证ssl._create_default_https_context = ssl._create_unverified_context # 修改_serverIP的值_serverIP = 'app.cloo...原创 2018-11-16 15:06:37 · 759 阅读 · 1 评论 -
python匿名函数、列表生成式和一些需要知道的点
【匿名函数】 定义格式: lambda a,b: a + b , a,b为形参,返回的数据为a+b。匿名函数只能用来执行一些简单的操作。当对元素为字典的列表进行排序时,使用匿名函数,很方便。info = [{"name": "zhangsan", "age": 18},{"name": "lisi", "age": 19},{"name": "原创 2018-09-13 16:05:47 · 274 阅读 · 0 评论 -
python操作MySQL数据库
引入模块from pymysql import connect 1、建立python与数据库的连接,调用pymysql模块中的connect()方法,得到Connection对象conn=connect(参数列表)* 参数host:连接的mysql主机,如果本机是'localhost'* 参数port:连接的mysql主机的端口,默认是3306* 参数database:数据...原创 2018-11-08 11:37:24 · 212 阅读 · 0 评论 -
操作python中的list、dict、set容器
1. 列表和普通变量有什么区别 列表是数据类型,普通变量是用来存储数据的 可以把列表赋值给普通变量2.存在列表 a = [11, 22, 33], 如何向列表中添加(增)新元素 44 a.append(44) 或者 a.insert(3,44) #索引号为33.对列表排序 a = [11,22,33,2] b = sorted(a) #创建了一个新的列表 ,a....原创 2018-08-27 00:12:00 · 242 阅读 · 0 评论 -
小记
无事原创 2018-11-08 11:37:40 · 114 阅读 · 0 评论 -
python中闭包函数与装饰器函数
闭包首先知道闭包函数的语法特征:函数嵌套定义 外部函数返回内部函数的引用 内部函数可以调用外部函数的自由变量外部函数的作用是创建内部函数并且返回内部函数的引用。def line(k, b): """外部函数的作用: 创建内部函数并且返回内部函数的引用""" def line_in(x): y = k * x + b print(y...原创 2018-09-30 19:21:21 · 421 阅读 · 0 评论 -
property属性的使用
property的作用是将一个属性的操作方法封装为一个属性,用户使用起来就和操作普通属性完全一致。property属性有两种使用方式:装饰器 :在方法上应用装饰器类属性:在类中定义值为property对象的类属性。首先看装饰器的方式: 我们要首先明白python中有经典类和新式类,新式类的属性比经典类属性丰富(如果类继承object,那么该类是新式类,python3中默认...原创 2018-09-29 17:41:13 · 2168 阅读 · 0 评论 -
使用super多继承及MRO顺序,解决菱形继承的父类二义性问题
情形:当一个类继承多个父类的时候,想要继承父类的__init__方法,可以使用 父类名.__init__(self) 方法时,但可能会出现父类二义性的问题(即多次调用父类__init__方法),可以使用super().__init__()方法继承父类的__init__方法。super方法继承可以解决菱形继承的父类二义性问题,super本质上就是使用MRO这个顺序去调用当前类在MRO顺序中的下一个类...原创 2018-09-29 16:13:27 · 441 阅读 · 0 评论 -
python赋值-浅拷贝-深拷贝
赋值: 对象之间的赋值本质上是对象之间的引用的传递而已,也就是多个对象指向同一个数据空间。浅拷贝: 浅拷贝是对一个对象的顶层数据的拷贝 浅拷贝 copy.copy(x) 切片操作 x[:] copy方法 x.copy()深拷贝: 深拷贝是对于一个对象所有层次的拷贝(递归) copy.deepcopy(x)为什么Pytho...原创 2018-09-28 17:56:42 · 166 阅读 · 0 评论 -
Python中*args 和**kwargs的用法
刚开始学习python的时候,对有关args,kwargs,和*的使用感到很困惑。相信对此感到疑惑的人也有很多。我打算通过这个帖子来排解这个疑惑(希望能减少疑惑)。让我们通过以下5步来理解: 1. 通过一个函数调用来理解’*’的作用 2. 通过一个函数的定义来理解’*args’的含义 3. 通过一个函数的调用来理解’**’的作用 4. 通过一个函数的定义来解’**kwargs’的含义 ...转载 2019-02-15 13:44:37 · 588 阅读 · 0 评论 -
python中的高级函数
python3版本1)reduce函数reduce()函数是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。from functools import reducedef ...原创 2018-12-25 12:39:13 · 338 阅读 · 0 评论 -
模型类序列化器ModelSerializer
如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。ModelSerializer默认将主键字段列为read_only=True。ModelSerializer与常规的Serializer相同,但提供了:基于模型类自动生成一系列字段 基于模型类自动为Serializer生成val...原创 2018-12-11 17:23:24 · 639 阅读 · 0 评论 -
如何使用DRF的序列化器之反序列化
验证数据:使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。在获取反序列化的数据前,必须调用is_valid()方法进行验证,验证成功返回True,否则返回False。is_valid()方法还可以在验证失败时抛出异常serializers.ValidationError,可以通过传递raise_exception=True参数开启,REST fram...原创 2018-12-11 16:22:32 · 1270 阅读 · 1 评论 -
Django类视图解析
以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。在Django中也可以使用类来定义一个视图,称为类视图。类视图的优点:代码可读性好、代码的复用性更高,如果其他地方需要用到类视图的某个特定逻辑,直接继承该类视图即可。使用类视图可以将视图对应的不同请求方式...原创 2018-11-28 20:57:03 · 644 阅读 · 0 评论 -
Django中间件
什么是中间件?:Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。可以类比flask中的请求钩子。使用方式: 在app应用中新建一个mideleware.p...原创 2018-11-29 00:01:15 · 271 阅读 · 0 评论 -
Django路由解析过程
django从url中获取路径 /users/id/ 后,首先删除最左边的 / 接着与根级url列表进行匹配,对比成功后删除匹配成功的部分即 /users 得到剩余部分 id/ 接着 id/ 与子级url列表进行匹配,匹配成功后找到视图函数,执行函数,将request请求对象传递视图函数...原创 2018-11-25 21:50:38 · 267 阅读 · 0 评论 -
Django中request对象与response对象
浏览器向服务器传参数,主要通过以下四种方式视图函数定义方式from django.shortcuts import renderfrom django.http import HttpResponse, JsonResponseimport json# 1获取URL中的参数def get_params(request, id, category): print(id, ...原创 2018-11-25 21:25:42 · 202 阅读 · 0 评论 -
python全局解释器锁(GIL)的问题
GIL即全局解释器锁,是属于解释器层面的互斥锁,确切的说是CPython解释器内部的一把锁。GIL是为了锁定整个解释器内部的全局资源,每个线程想要运行首先获取GIL,而GIL本身又是一把互斥锁,造成所有线程只能一个一个并发交替的执行。注意多个python进程=多个GIL锁GIL产生的背景 在CPython解释内部运行多个线程的时候,每个线程都需要向解释器内部申请相应的全局资源,由于C语言...原创 2018-09-28 17:29:31 · 324 阅读 · 0 评论 -
python实现miniweb框架
用户通过浏览器发送请求到web服务器,服务器根据请求资源的不同采取不同的返回方式,当浏览器请求的是静态资源,服务器直接返回响应资源,当浏览器请求的是动态资源,服务器需要将请求发送给框架,框架调用模板,将请求数据和模板结合返回给服务器,服务器将模板以响应体的方式发送给浏览器。浏览器读取响应体,若有图片等静态资源,浏览器继续向服务器发送资源请求,服务器直接返回静态资源,所有资源请求完毕,浏览器将最...原创 2018-10-17 22:27:41 · 901 阅读 · 0 评论 -
python使用with操作上下文管理器
python 提供了with语法用于简化资源操作的后续清除操作,实现原理建立在上下文管理器协议(实现__enter__和__exit__)之上。上下文管理器:上下文管理器的本质就是能够支持with操作。任何实现了__enter__()和__exit__() 方法的对象都可以成为上下文管理器。常见的文件对象就是实现了上下文管理器。实现上下文管理器, 写一个自己的文件类class M...原创 2018-10-06 20:57:54 · 226 阅读 · 0 评论 -
关于python中range 、randint索引注意事项
1 import random 2 3 """字符串的操作中 三种方法,只包含左索引,不包含右索引""" 4 hi= "bokeyuan python" 5 num1 = hi.find("keyuan",2,8) # 包括索引2 不包括索引8 6 num2 = hi.find("thon",8,14) # -1 7 num3 = hi.find("tho原创 2018-08-27 19:51:00 · 2949 阅读 · 0 评论 -
python常用的字符串操作方法
# 含多空格字符串的分割hello = "hello python hello"print(hello.split(" ")) # ['hello', 'python', '', 'hello'] ...原创 2018-08-25 23:55:00 · 136 阅读 · 0 评论 -
python排序算法 之 快排、堆排序、归并排序、希尔排序
快速排序 快排思路: 1.取一个元素p(第一个元素),使元素p归位 2.列表被p分成两部分,左边都比p小,右边都比p大 3.递归完成排序 算法关键点: 1.整理 2.递归 总共分为logn层,每层一次partition,复杂度为:O(nlogn)# 添加装饰器 查...原创 2018-09-09 20:11:52 · 391 阅读 · 0 评论 -
python排序算法 之 选择、冒泡、插入排序
1.选择排序 给定一个列表,一趟遍历记录最小的数,放到第一个位置,再一趟遍历记录剩余列表中最小的数,继续放置…… 1.每趟选出一个最小的,得到其索引,然后把该值和该趟的起始值作交换 该趟最小值在确定的位置,每趟比上一趟比较的数据少一个,数据从前减少 2.每趟的起始值编号比上一趟的起始值多一,起始编号最大到倒数第二个 3.直到倒数第二个与倒数第一个比较结束后...原创 2018-09-06 00:04:11 · 288 阅读 · 0 评论 -
python面向对象编程
Python面向对象编程 首先明白面向过程和面向对象概念 面向过程:根据业务逻辑从上到下书写代码 面向对象:将数据与函数绑定在一起,进行封装,加速开发过程,减少重复代码的书写 类:具有相同或相似属性和行为的事物的集合,类是抽象的 对象:在现实生活中真实存在的物体,看得见摸得到 属性:事物的特征信息,静态数据 方法:事物能进...原创 2018-09-05 10:33:30 · 107 阅读 · 0 评论 -
对python中引用的理解
数据的在内存中的地址就是数据的引用。如果两个变量为同一个引用,那么这两个变量对应的数据一定相同;如果两个变量对应的数据相同,引用不一定相同。通过id(数据)可以查看数据对应的地址,修改变量的值,其实是在修改变量的引用。 关于【引用】,分可变类型与不变类型,且python中参数...原创 2018-08-30 17:07:00 · 213 阅读 · 0 评论 -
python中的组包与解包
关于【组包与解包】:组包:python解释器自动将多个数据组装到一个容器中解包:将容器中的多个数据拆出来组包: 解释器把1,2,3自动组包成一个元组,然后赋值给a,a的类型就是元组类型的 a = 1,2,3 # 相当于 a = (1,2,3) print(a) # (1, 2, 3) print(type(a)) # <class 'tuple'>#解包: 解释器会...原创 2018-08-30 17:17:00 · 2705 阅读 · 0 评论 -
使用Web API 和Pygal可视化GitHub最受欢迎的仓库
import requestsimport pygalfrom pygal.style import LightColorizedStyle as LCS, LightenStyle as LS# 执行API调用并存储响应url = "https://api.github.com/search/repositories?q=language:python&sort=stars"...翻译 2018-10-06 00:15:03 · 383 阅读 · 0 评论 -
python多线程实现多任务 附demo
使用线程完成多任务需要导入threading包:import threading1.线程类Thread参数说明:Thread([group [, target [, name [, args [, kwargs]]]]])group: 线程组,目前只能使用None target: 执行的目标任务名 args: 以元组的方式给执行任务传参 kwargs: 以字典方式给执行任务传参...原创 2018-09-27 22:24:34 · 4065 阅读 · 0 评论 -
python网络编程 TCP协议 TCP与UDP的区别
TCP(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议。创建TCP通信三个步骤:创建连接 数据传送 终止连接TCP通信类似于生活中的打电话,通信开始前一定要先建立相关的连接。TCP特点:面向连接 这种连接是一对一的,因此TCP不适用于广播的应用程序 可靠传输 TCP采用应答机制 超...原创 2018-09-27 09:55:44 · 824 阅读 · 0 评论 -
python网络编程 Socket介绍 UDP网络传输协议
先来想个问题,不同电脑上的进程之间如何通信?首先通过ip地址找到网络中对应的电脑,然后通过传输协议和端口号来确定这个进程(运行起来的软件),那么数据如何传输需要使用socket来完成,也就是进程之间通信使用socket。运行的程序或者软件称之为进程,所谓进程间通信是指运行程序之间的数据共享。所谓的网络编程,就是让在不同的电脑上的软件能够进行数据传递,即进程之间的通信。网络通信过程(...原创 2018-09-27 00:06:18 · 284 阅读 · 0 评论 -
python网络编程 IP地址与端口的作用
学习python网络编程首先需要知道以下基本知识:1.IP地址IP地址是指互联网协议地址(Internet Protocol Address),用来给Internet上的电脑一个编号。IP地址的作用:用来在网络中标记一台电脑。私有IP:有一部分地址用于局域网使用,属于私网IP,范围:10.0.0.0~10.255.255.255 (内网,虚拟机中常出现,A类)172.16...原创 2018-09-26 23:05:14 · 1449 阅读 · 0 评论 -
python多协程完成多任务
协程,也称用户级线程,在不开辟线程的基础上完成任务,也就是在单线程的情况下完成多任务,多个任务按照一定顺序交替执行,通俗理解只要在def里面看到只有一个yield关键字表示的就是协程。学习协程的目的:不开辟线程完成多任务,为了更加节省内存资源。原始协程程序import time# 定义协程1def work1(): for i in range(5): ...原创 2018-10-03 11:46:58 · 2896 阅读 · 0 评论 -
windows 10 安装pyecharts等第三方库时报错信息,Command "python setup.py egg_info" failed with error code 1 in ...
问题描述:如题解决办法: pip install --upgrade setuptools 安装pyecharts成功后import pyecharts,出现ModuleNotFoundError: No module named 'pyecharts_snapshot',解决方法:pip install pyecharts_snapshot...原创 2018-10-02 22:03:51 · 1263 阅读 · 0 评论 -
python迭代 迭代器 生成器
学习协程之前先来学习几个知识点:迭代使用for循环遍历取值的过程叫做迭代,如使用for循环遍历列表获取值的过程可迭代对象:使用for循环遍历取值的对象叫做可迭代对象, 比如:列表、元组、字典、set、range、字符串判断对象是否是可迭代对象: from collentions import Iterable result = isinstance((3, 5), ...原创 2018-10-02 15:44:44 · 228 阅读 · 0 评论 -
python进程实现多任务
1.导入进程模块 import multiprocessing1.2 Process进程类的语法结构如下:Process([group [, target [, name [, args [, kwargs]]]]])group:指定进程组,目前只能使用None target:执行的目标任务名 name:进程名字 args:以元组方式给执行任务传参 kwargs:以字...原创 2018-10-02 14:54:34 · 642 阅读 · 0 评论