Python
@红@旗下的小兵
求知若渴 虚心若愚
展开
-
django 聚合函数
聚合函数存放位置:django中所有的聚合函数,都是放在 django.db.models 中的。聚合函数执行规则:聚合函数不能够单独执行,需要放在一些可以执行聚合函数的方法下面中执行。比如:"aggregate"# 在Articles模型中,有一个价格字段price,现在需要求所有文章price的平均数from django.shortcuts import renderfrom django.db.models import Avgfrom apps.test_thre.原创 2020-12-28 20:19:39 · 272 阅读 · 1 评论 -
Python实用技巧之列表、字典、集合筛选数据
以下所有列表、字典、集合都是通过random随机生成的:import random# 生成一个-10到10的10个随机整数列表random_list = [random.randint(-10, 10) for _ in range(10)]列表1、过滤列表中的正数使用for表达式# 使用for表达式 内部使用if判断r = [num for num in random_list if num >= 0]使用filter高阶函数# 这里使用lambda表达式#原创 2020-12-28 15:53:16 · 400 阅读 · 0 评论 -
django 表关系之 多对多
应用场景:比如一篇文章和标签的关系。一篇文章可以有多个标签,一个标签可以被多篇文章所引用。因此标签和文章的关系就是典型的多对多的关系。下边只是一篇文章对应多个标签;一个标签对应多篇文章就不举例了,自己脑补下!实现方式:django为实现多对多的关系,提供了专门的字段ManyToManyField。还是拿文章和标签举例:class Articles(models.Model): title = models.CharField(max_length=200, null=.原创 2020-12-27 10:23:06 · 2775 阅读 · 0 评论 -
dhango 一对一
应用场景:比如一个用户表和一个用户表信息。在实际开发中可能需要保存用户的许多信息,但是有些信息是不经常用的。如果把所有信息都存放到一张表中,可能影响查询效率,因此可以把用户的一些不常用的信息存放到另外一张表中,我们叫做UserExtension。用户表User和用户信息表UserExtension就是典型的一对一的关系。实现方式:与ForeignKey类似,django为一对一提供了专门的Field叫做OneToOneField来实现一对一的操作:# 用户表 - 存储常用信息cl..原创 2020-12-26 20:39:59 · 173 阅读 · 1 评论 -
django 一对多关系
前几篇文章在记录ForeignKey时,其实已经实现一对多的关系,这篇文章来详细记录下。实现一对多关系就是通过 ForeignKey来实现:1、首先通过ForeignKey来关联User表中的数据(下边案例我们关联的是id为1的数据,一个user用户(可以把user理解为一个作者)可以对应多篇文章);2、第一次关联完之后,第二次我们想再次关联User表中id为1的数据时,应该:把User表中id为1的数据先取出来,然后再次关联,详细代码如下;# 模型class User(models.M原创 2020-12-23 20:54:31 · 3405 阅读 · 2 评论 -
django 外键删除
如果一个模型使用了外键。那么在对方那个模型被删除掉后,该进行什么样的操作。可以通过 on_delete 来指定。可以指定的类型如下:1、CASCADE:级联操作。如果外键对应的那条数据被删除了,那么这条数据也会被删除。def index(res): user = User.objects.get(pk=2) user.delete() return '删除成功'现在我们删除User表中的id为2的数据,结果外键关联的数据也被删除了:2、PROTECT:受保原创 2020-12-23 20:19:56 · 1448 阅读 · 0 评论 -
python中的navie和aware
今天来了解下navie和aware的意思,先来看一段代码:在linux环境中,如果想把当前时间转化为UTC时间,如下:import pytzfrom datetime import datetime# 获取当前的时间current_time = datetime.now()# 获取UTC时间对象utc_timezone = pytz.timezone("UTC")# 把当前时间转化为 UTC 时间 astimezone()utc_time = current_time.astimez原创 2020-12-18 21:02:29 · 1287 阅读 · 1 评论 -
python pathlib模块
编程中有个比较烦人的事情,Windows系统在文件名中间用的是反斜杠字符,而几乎所有其它计算机系统都是用的斜杠字符:Windows文件名:C:\Users\Administrator\Desktop大部分其它操作系统:C:/Users/Administrator/Desktop如果你想让你的Python代码在Windows、Mac和Linux系统都能运行,那你就得处理好这种平台特定问题。幸好,Python 3 里有个叫pathlib的新模块,能让我们轻松应对文件和路径问题。使.原创 2020-12-09 20:57:39 · 524 阅读 · 0 评论 -
python - collections模块之defaultdict类
在取dict中值的时候,可以使用setdefault( ) 方法,如果字典中没有key,不会报错,参数二还可以设置默认值,此方法在一定程度上解决了dict中不存在默认值的问题,但是这这时我们想,有没有一种字典它本身提供了默认值的功能?答案是肯定的:collections.defaultdict初始化:1、defaultdict 类它可以使用类型来初始化字典中的值:from collections import defaultdictcounts = defaultdict(list).原创 2020-12-06 10:30:29 · 2526 阅读 · 0 评论 -
python - collections模块之namedtuple函数
namedtuple:具名元祖,可以使tuple更加语义化,之前我们写一个元祖tuple,对内部元素不能进行命名,往往我们并不知道一个元祖所要表达的意义,而namedtuple很好的解决了此问题:(加强版tuple)1、语法:(常用的2个参数)· tuple_name 元祖的名称· field_name 元祖中元素的名称,通常是一个可迭代的数据,也可以是以逗号隔开的元素名称namedtuple('tuple_name', 'field_names')2、创建namedt..原创 2020-12-05 20:29:51 · 364 阅读 · 0 评论 -
python中bisect可帮你维护已排序序列
bisect 是python内置模块,用来处理已排序的升序序列,主要方法有插入和查找:(注意必须是升序序列,否则无效)· 查找 - bisect(序列,要查找的值)· 插入 - insort( 序列,要插入的值)查找:返回:如果要插入到序列中去的话的位置索引import bisectbisect_list = [1, 4, 8]r = bisect.bisect(bisect_list, 2)print(r) # 1插入:返回:None,会改变原有序列,会...原创 2020-12-05 17:48:04 · 237 阅读 · 0 评论 -
解决使用pipenv 来安装虚拟环境 报错:Traceback (most recent call last):··· ···问题
先来看下报错截图:看到这个报错,先别慌(说实话我看到这个报错当时也有点慌了),首先我上网查了一圈:多数都是说更改某个文件中的编码格式,是的,这个是没错的!但是按照网上说的更改多数情况没有用,其实真正原因在于他们报错的文件与你的不一样!!!(1)直接看报错的最后一行,你的报错文件路径,上边截图红框是我的报错的文件路径,找到这个文件之后(我的报错文件是 nt.py ),打开,找到对应的行(我的是第78行),然后把 "utf-8" 改为 'gbk'即可。下边是我更改之后的代码:然...原创 2020-11-28 18:37:44 · 1249 阅读 · 0 评论 -
python开篇—数据类型及变量
近年来儿童编程日趋火爆,而Python语言似乎成为了热门,原因很简单,1.入门相对简单;2、大数据、人工智能的时代下,而Python语言主要应用于人工智能和数据挖掘领域,以及它周边生态系统相当丰富。2012年起,云时代的到来,Openstack云计算平台基于Python开发的,自动化运维工具Ansible、SaltStack基于Python开发的。2013年大数据时代的到来,海量的数据处理,而Py...原创 2019-07-30 11:21:50 · 390 阅读 · 0 评论 -
python基础二——数据类型之字符串str
这篇文章,我们着重看下字符串str一些方法及函数,主要包括以下8个知识点:ord()函数 chr()函数 str.encode方法 bytes.decode方法 str( )函数 字符串中插入变量 字符串截取方法 (补充)字符串其它方法 isdigit( ) 函数在最新的python3版本中,字符串以unicode编码的,也就是说,Python的字符串支持多语言,例如:...原创 2019-07-30 15:25:53 · 859 阅读 · 0 评论 -
python基础三——中条件判断语句
条件判断:python中的条件判断if,与js类似,只不过是写法不一样,我们来看下:num = 20if num < 10: print("num小于10")elif num < 20: print("num小于20")else: print("num小于30")上边代码,if后边以判断语句,后边跟着一个冒号,返回True则进入里边缩进的代码块,其他判断...原创 2019-07-30 16:29:53 · 825 阅读 · 0 评论 -
python基础四——内置数据类型list及tuple
list列表当小编看到list的样子的时候,惊讶道:这不是数组吗?哈哈哈!我在开篇有讲到,python中好多数据类型跟JavaScript十分相像,话不多说,切入正题。下边我们来看下list [ ]list是python内置的一种数据结构,list是一种有序的集合,可以随时添加或删除里边的元素!这与字符串str、元组tuple十分类似,他们都是一种有序集合,共同点都可以使用 [ ] 通...原创 2019-07-30 17:57:24 · 453 阅读 · 0 评论 -
python基础五——range函数
range( start , stop , step ) 函数,它可以创建一个整数列表,结合for循环,用法非常灵活。三个参数意思是:start:起始位stop:终止位step:步长range( )函数始终遵循左闭右开的原则!一个参数:(其实一个参数的情况与两个参数起始位为0的情况是等价的)默认从0开始,创建一个0~4 左闭右开的整数列表。for i in ran...原创 2019-07-31 09:38:57 · 2185 阅读 · 0 评论 -
python基础六——循环语句
在python中,有两种循:for in和whilefor in循环for循环只要是用来遍历序列、集合、字典。用法:list = [1,2,3]for i in list: print(i,end='') # 1 2 3 tuple = (1,2,3,)for i in tuple: print(i) # 1 2 3上边代码,分别循环li...原创 2019-07-31 12:15:41 · 3712 阅读 · 0 评论 -
python基础七——dict和set
dictdict是dictionary简写,英文字典、词典的意思,dict是Python内置的数据类型,定义时使用大括号,里边采用键值对的形式存储数据,具有无序性,它具有极快的查找速度。(跟JavaScript中的对象写法一样)特点:1、键必须是唯一的(如数字、字符串、元组),如果key为list列表,将会报错!值不必是唯一的,如果多个重复的键,最后定义的会覆盖前边;2、值可以是任...原创 2019-07-31 17:12:28 · 612 阅读 · 0 评论 -
Python中的切片
在前几篇文章中我提过切片的用法,今天详细来聊下Python中的切片,名字看起来难以理解,别慌!我的理解切片就是截取序列中元素的一种方式;所谓的序列就是有顺序的列表,如:字符串str、列表list、元组tuple都是序列:eg:list = [1,2,3]print(list[0]) # 1上边代码,获取了list列表中第一个元素,如果我们想获取列表中后两位元素怎么办呢?切片就上...原创 2019-08-02 11:53:04 · 887 阅读 · 0 评论 -
Python包和模块
模块:在介绍python包之前,先来了解下模块,一个.py文件就是一个模块(与node.js模块概念类似,一个.js文件就是一个模块),模块里边可定义变量、函数和类。导入模块(module)在python中模块分为自定义模块、内置模块、第三方模块,这篇文章我们着重聊下模块的引入。在python中引入模块有两种方式:1、import module1,module2,module3...原创 2019-08-05 09:49:57 · 261 阅读 · 0 评论 -
Python中的函数
python中的函数与js中函数功能一样封装共用逻辑,增加代码可复用性,但是复杂性远远高于JavaScript,在本篇文章中我将分六大方面来跟大家聊下函数:定义函数 函数返回值 空函数 函数参数的类型检查 多值返回 函数参数 函数参数又分3个部分: (1)默认值参数 (2)可变参数 (3)...原创 2019-08-05 15:17:36 · 301 阅读 · 0 评论 -
python中高阶函数
这篇文章介绍下Python中的3个高阶函数,map、reduce、filter,如果你对JavaScript中的数组方法熟悉的话,这几个高阶函数其实很简单!用法跟JavaScript中的类似,我们来依次看下用法:map用法:将传入的函数依次作用于Iterable中的每一个元素,(其实跟js中数组map用法一样,只是用法一样)我们用代码解释下:map( fn , Iterable )接受...原创 2019-08-06 11:16:57 · 198 阅读 · 0 评论 -
python中的匿名函数lambda
在python中,对匿名函数有特殊的写法:lambda x:x*xlambda关键字表示匿名函数,冒号前边x表示传递的参数,后边是返回的结果。有几点值得注意的地方:1、匿名函数必须 且 只能有一个表达式;2、不需要写return;3、值就是表达式的结果;4、也可以把匿名函数作为返回值。以filter为例:li = [1,2,3]new_li = filte...原创 2019-08-06 16:00:44 · 193 阅读 · 0 评论 -
python面向对象编程(一)类
相信前端的小伙伴都熟悉ES6中的类,在ES6中类只不过是构造函数一个语法糖而已。而在Python中的类与其类似,类就是一个模板,里边定义了许多变量、方法,传入不同的数据,会产生不同的结果(像是一个生产工厂一样,通过生产加工,会产生不同的产品)。使用关键字class来定义一个类。下边我们还是以代码说下:class Person (): passp = Person('lxc')...原创 2019-08-07 14:55:51 · 815 阅读 · 1 评论 -
python面向对象编程(三)变量和方法的可见性
在类中定义的变量和方法,在外界是可以直接调用变量或方法去访问,可以随意的更改类中变量:class Person(): def __init__(self,name,age): self.name = name self.age = age def fn(self): passp = Person('lxc',20)p.nam...原创 2019-08-09 14:44:14 · 535 阅读 · 0 评论 -
python面向对象编程(二)类的继承
继承性最根本的作用就是避免编写重复代码,在创建一个类的时候,形参中要定义一个类名,表示该类是从哪个类继承而来的,如果没有合适的继承类,用object,因为所有的类最终都会继承object这个类。class Person (object): passp = Person()类的继承类怎么继承呢,在ES6中类的继承是通过extend,在类的constructor方法中还要定义一...原创 2019-08-09 17:11:46 · 482 阅读 · 0 评论 -
python-for表达式
最近放慢了学习进度,原因有两点:在学习python同时,前端最近也在复习中;有js基础学习python确实很顺手,但是有些细枝末节的知识点,还是花费了不少时间!前期基础牢固,后期学习框架会很舒服!!!这篇文章介绍for表达式:for表达式与普通for循环区别有三点: 1、在for关键字前边要定义一个表达式 2、没有循环体,因此不需要冒号 3、for表达式返回的是一个列表,...原创 2019-08-18 10:11:23 · 859 阅读 · 0 评论 -
python常用工具函数
zip()函数把两个列表(或元祖,字符串也行)‘压缩’ 成一字zip对象(可迭代对象),目的:使用循环可以并行的循环两个列表;返回的是一个列表,里边是由原列表元素组成的元祖。l1 = [1,2,3,4]l2 = [1,2,3,4]r = [i for i in zip(l1,l2)]print(r) # [(1, 1), (2, 2), (3, 3), (4, 4)]...原创 2019-08-18 14:20:02 · 371 阅读 · 0 评论 -
python全局变量与局部变量
我们都知道全局变量在所有函数内部都可以被访问到,但是如果在函数中定义了与全局变量同名的变量,此时,会发生局部变量遮蔽(hide)全局变量的情形。a = 1def fn(): ''' 正常访问全局变量 ''' print(a) # 1fn()a = 1def fn(): ''' 局部变量遮蔽全局变量情形 ''' pr...原创 2019-08-19 21:23:44 · 452 阅读 · 0 评论 -
python局部函数
前边文章我们介绍的函数都是定义在全局环境中的,都是全局函数。python还支持在函数体内定义函数,称为局部函数。这篇文章着重说下局部函数内的变量也会遮蔽(hide)它所在函数内的变量(有点绕哈!别慌,其实很简单!)def fn(): name = '鸡小西' def local(): print(name) #UnboundLocalError: loca...原创 2019-08-19 21:45:31 · 667 阅读 · 0 评论 -
python面向对象编程(三)__slots__
在前边文章介绍过通过实例为类动态添加方法,但是有个问题,添加的方法只是当前实例可用:def son(self): print(self.name) # 'lxc'class Cat: def __init__(self,name): self.name = namec = Cat('lxc')c1 = Cat('hehe')c.son_fun = s...原创 2019-08-21 22:12:45 · 153 阅读 · 0 评论 -
python装饰器
装饰器本质是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码并且不需要改变调用函数的方式的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景。有了装饰器,我们就可以抽离函数共同的逻辑代码,概括的讲,装饰器的作用就是为已经存在的对象添加功能。以下是补充的内容:*******...原创 2019-08-24 17:49:34 · 146 阅读 · 0 评论 -
python-正则表达式
在python中,使用正则表达式,需要先导入re模块。使用 re.__all__ 查看模块的全部属性和函数:import reprint(re.__all__)# 打印结果'''['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'findall', 'finditer', 'compile', ...原创 2020-07-25 07:59:28 · 950 阅读 · 0 评论 -
python与JSON转化
在Python中,因为json数据是字符串格式的,如何转化为python数据结构呢?反序列化 -------json转python要引入json模块1、json.loads (string)可以把json字符串对象 转化为python对应的数据结构import jsonjson_str = '{"name":"lxc","age":20}'r = json.load...原创 2019-08-25 11:48:20 · 275 阅读 · 0 评论 -
python 中 if __name__ == '__main__' 意思
之所以要研究下if __name__ == '__main__' 的作用,是因为最近在学flask框架看到了此判断。先来看下__name__作用:__name__ 是python的内置变量,用来表示当前模块的名字,当前模块输出的结果永远都是 __main__( 也就是主模块的意思),如果当前模块还引入别的模块,执行当前模块,被引入的模块的__name__是它的模块名字。pri...原创 2019-08-27 13:45:06 · 224 阅读 · 0 评论 -
python 中format方法详解
1、术语说明:· str.format( ) 方法通过字符串中的花括号 { } 来识别需要替换的字段,从而完成字符串的格式化。省略字段名:(1)注意:花括号的数量可以少于位置参数,反之则不行!!!print("大家好,我叫{},来自{}".format('^&*%^&*','火星'))# 大家好,我叫^&*%^&*,来自火星2、使用变量...原创 2019-09-11 13:11:41 · 514 阅读 · 0 评论 -
python中的__repr__ 方法
先来看一段代码:class Person(): def __init__(self,name,age): self.name = name self.age = ageperson = Person('吕星辰',20)print(person) # 内存中的一个对象 <__main__.Person object at 0x0042A6A0&...原创 2019-10-17 15:15:16 · 9896 阅读 · 7 评论 -
python —— getattr、setattr、hasattr
getattr、setattr、hasattr都是python的内置函数。getattr(obj,key)—— 获取类或类实例中的属性值,没有则会报错!!!setattr(obj,key,value) —— 给类设置属性值!!!hasattr(obj,key) —— 检查类或者类实例是否有这个属性参数:obj:对象key:对象中的属性value:对象属性值g...原创 2019-10-24 19:52:10 · 268 阅读 · 0 评论