python提高
文章平均质量分 63
python提高
68岁爱用飘柔
纵有疾风起,人生不言弃.
展开
-
元类实现ORM
元类实现ORM 1. ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM。 一个句话理解就是:创建一个实例对象,用创建它的类名当做数据表名,用创建它的类属性对应数据表的字段,当对这个实例对象操作时,能够对应MySQL语句 demo: class User(父类省略): uid = ('uid', "int unsigned") name = ('username', "v原创 2021-01-11 13:22:59 · 117 阅读 · 0 评论 -
python-内建函数
内建函数 我们知道python中一切皆对象,并且像python中print函数和input函数等都是哪里来的呢? 我们来看一下,在python中有一个globals函数,它可以打印出当前文件中所有的全局变量,我们来看个例子: # -*- coding: utf-8 -*- # @Author : summer a = 100 def b(): pass class C: pass g = globals() print(g) # 运行结果 {'__name__': '__main__原创 2021-01-11 12:13:56 · 229 阅读 · 0 评论 -
元类
元类 一、类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立: >>> class ObjectCreator(object): … pass … >>> my_object = ObjectCreator() >>> print(my_object) <__main__.ObjectCreator object at 0x8974f2c> 但是,Python中的类还远不止原创 2021-01-11 11:51:35 · 98 阅读 · 0 评论 -
魔法属性
魔法属性 无论人或事物往往都有不按套路出牌的情况,Python的类属性也是如此,存在着一些具有特殊含义的属性,详情如下: 1. __doc__ 表示类的描述信息 class Foo: """ 描述类信息,这是用于看片的神奇 """ def func(self): pass print(Foo.__doc__) #输出:类的描述信息 2. __module__和__class__ __module__表示当前操作的对象在那个模块 __class__ 表示当前操作的对象原创 2021-01-01 15:21:43 · 181 阅读 · 0 评论 -
property属性
property属性 一、什么是property property是一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法。 # -*- coding: utf-8 -*- # ############### 定义 ############### class Foo: def func(self): pass # 定义property属性 @property def prop(self): return 100 # #####原创 2021-01-01 15:09:20 · 6203 阅读 · 0 评论 -
静态方法和类方法
1. 类属性、实例属性 它们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 实例属性属于对象 类属性属于类 class Province(object): # 类属性 country = '中国' def __init__(self, name): # 实例属性 self.name = name # 创建一个实例对象 obj = Province('山东省') # 直接访问实例属性 print(obj.name) # 直接访问原创 2021-01-01 14:41:31 · 172 阅读 · 0 评论 -
多继承
多继承以及MRO顺序 一、单独调用父类 # coding=utf-8 print("******多继承使用类名.__init__ 发生的状态******") class Parent(object): def __init__(self, name): print('parent的init开始被调用') self.name = name print('parent的init结束被调用') class Son1(Parent): def __原创 2020-12-31 21:48:46 · 149 阅读 · 0 评论 -
面向对象的三大特性
面向对象的三大特性 封装、继承、多态 是面向对象的3大特性 一、封装 好处 在使用面向过程编程时,当需要对数据处理时,需要考虑用哪个模板中哪个函数来进行操作,但是当用面向对象编程时,因为已经将数据存储到了这个独立的空间中,这个独立的空间(即对象)中通过一个特殊的变量(class)能够获取到类(模板),而且这个类中的方法是有一定数量的,与此类无关的将不会出现在本类中,因此需要对数据处理时,可以很快速的定位到需要的方法是谁 这样更方便 全局变量是只能有1份的,多很多个函数需要多个备份时,往往需要利用其它原创 2020-12-31 20:53:19 · 321 阅读 · 0 评论 -
深拷贝和浅拷贝
赋值、深拷贝、浅拷贝 一、赋值 在Python中,赋值只是创建一个变量,该变量指向原来的内存地址,换句话说就是类似c语言内的指针,用一个指针指向一个元素的内存地址。 In [1]: a = [11, 22] In [2]: b = a In [3]: id(a) Out[3]: 63796288 In [4]: id(b) Out[4]: 63796288 上面的代码中,我们创建了一个列表a,并且把a赋值给b,此时查看a的id为63796288,而去查看b的id此时同样为63796288。说明在p原创 2020-12-31 18:57:13 · 74 阅读 · 0 评论 -
Python线程与GIL的关系
Python进程与GIL的关系 本人的电脑:win7,4核,python3.7 一、python与GIL 首先,我们想一下,如果有一个死循环在程序中进行,此时占用多少cpu资源呢?我们运行一下代码,查看其CPU使用率为多少? # -*- coding: utf-8 -*- while True: pass 运行以上程序代码之后,他的cpu占用率大约在24%左右。并且cpu0是跑满的状态 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZLWSmfDt-160931原创 2020-12-30 16:04:05 · 222 阅读 · 0 评论 -
多任务知识点总结
多任务 一、线程 线程是操作系统调度的单位,在Python中使用threading类中的Thread来创建函数,并且利用target指定线程需要执行的函数名称,也可以通过args传入元组参数放入其线程中。 线程之间共享全局变量,因此无需其余的东西来进行通信,但也因此会产生资源占用等情况,此时我们需要引入互斥锁,即当一个线程用到全局变量时,会将该值锁住,等待该线程执行完毕之后再解开。其余线程也是同样的方式利用互斥锁来保护全局变量。在使用互斥锁的同时还需要注意避免出现死锁的情况。死锁即A等待B的资源原创 2020-12-23 15:00:06 · 123 阅读 · 0 评论 -
多任务-协程
协程 代码传送门 一、迭代器 迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 1.1 可迭代对象 我们已经知道可以对list、tuple、str等类型的数据使用for…in…的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。 同时我们也知道,整数是不能使用for…in…来进行迭代的,那如果我们自己创建一个类,然后在类的内部添加一个list,这个类是否是迭代原创 2020-12-22 20:34:45 · 336 阅读 · 0 评论 -
多任务-进程
进程 以下所有代码都已上传github,传送门 一、进程以及状态 1.1 进程 程序:例如xxx.py、xxx.c是一个程序,是静态的。 进程:一个程序运行起来之后,代码+用到的资源称之为进程,它是操作系统分配资源的基本单元。 不仅可以通过线程完成多任务,进程也是可以的 1.2 进程的状态 在工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致有了不同的状态。 一个进程大致分为:就绪态、执行态、等待态。 就绪态:运行的条件都已经慢去,正在等在cpu执行原创 2020-12-22 10:31:36 · 107 阅读 · 0 评论 -
多任务-线程
多任务-线程 以下代码都已经上传github,传送门 一、多任务 1.1介绍 在现实中 有很多的场景中的事情是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的; 在程序中 from time import sleep def sing(): for i in range(3): print("正在唱歌...%d"%i) sleep(1) def dance(): for i in range(3): pr原创 2020-12-19 16:51:49 · 159 阅读 · 1 评论