随笔分类 -  学习笔记

摘要:说点什么: 整理下工作中配置celery的一些实践,写在这里,一方面是备忘,另外一方面是整理成文档给其他同事使用。 演示用的项目,同时也发布在Github上: https://github.com/blackmatrix7/celery demo 这份笔记会随着经验的积累,逐步调整完善,不过通常情况 阅读全文
posted @ 2018-04-26 11:20 BlackMatrix 阅读(8695) 评论(1) 推荐(0)
摘要:前几天在给个list做排序的时候,隐隐约约想起来有个语法糖可以替代lambda函数,用来获取list中dict的key,作为排序的key。 这个语法糖平时用得少,怎么都想不起来。今天查看python标准库operator时,终于把这两个方法找到了,做个笔记。 因为就是一个语法糖,太简单了,没必要做太 阅读全文
posted @ 2018-04-13 17:11 BlackMatrix 阅读(2151) 评论(0) 推荐(0)
摘要:运行环境: Python 3.5.2 Django 2.0.3 Django Admin中model显示为中文 定义model时,定义一个Meta对象,设置需要显示的中文名称。verbose_name为单数名称,verbose_name_plural为复数名称。因为中文没有区分单数、复数,所以都定义 阅读全文
posted @ 2018-03-12 15:06 BlackMatrix 阅读(5876) 评论(0) 推荐(0)
摘要:生成器(yield)作为协程 yield实际上是生成器,在python 2.5中,为生成器增加了.send(value)方法。这样调用者可以使用send方法对生成器发送数据,发送的数据在生成器中会赋值给yield左侧的变量(如果有的话),可以生成器可以作为协程使用。 下面是一个使用生成器实现的,求平 阅读全文
posted @ 2018-01-19 10:46 BlackMatrix 阅读(1018) 评论(0) 推荐(0)
摘要:描述符可以细分为覆盖型描述符与非覆盖型描述符。 可以按如下规则区分它们: 实现 __set__ 方法的类,称之为“覆盖型描述符” 没有实现 __set__ 方法的类,但实现了__get__方法的类,称之为“非覆盖型描述符” 同时实现 __set__ 和 __get__ 方法的类,通常称之为“强制描述 阅读全文
posted @ 2017-08-17 14:35 BlackMatrix 阅读(508) 评论(0) 推荐(0)
摘要:因为描述符本身可以接管实例属性的访问,利用这个特点,可以使用描述符来实现一些实例属性的类型检查工作。 先定义一个描述符 Point,用于管理坐标信息。 定义一个Address类,及类属性home,home接收一个坐标信息 实例化Address,并对实例属性进行赋值 第一次,赋值给home一个正确的坐 阅读全文
posted @ 2017-07-14 08:57 BlackMatrix 阅读(298) 评论(0) 推荐(0)
摘要:描述符通过描述符协议实现,任何实现或部分实现以下方法的类,都可以作为描述符使用。 __get__ 方法接收三个参数:self为描述符实例自身; instance指访问属性所属的实例;owner指描述符实例附加到的类。 __set__方法的前两个参数于__get__方法相同,第三个参数value为需要 阅读全文
posted @ 2017-07-13 15:46 BlackMatrix 阅读(427) 评论(0) 推荐(0)
摘要:在开始正文之前,需要了解下Python的绑定方法(bound method)和非绑定方法。 简单做个测试: 定义一个类,类中由实例方法、静态方法和类方法。 逐个测试,测试的结果在注释说说明。 接着尝试把一个函数,绑定到类或者实例上。 第一种方法,直接将函数赋值给类。 上面这种方法,存在一些局限性。比 阅读全文
posted @ 2017-07-01 21:17 BlackMatrix 阅读(1173) 评论(0) 推荐(0)
摘要:简单一句话,当一个类实现__call__方法时,这个类的实例就会变成可调用对象。 直接上测试代码 注意,是这个类的实例变成可调用对象,类的实例变成可调用对象,类的实例变成可调用对象,而不是改变这个类的实例化行为。 那么,如果要改变一个类的被实例化行为呢? 当然要用上黑魔法元类了,因为类本身就是元类的 阅读全文
posted @ 2017-05-25 21:21 BlackMatrix 阅读(3070) 评论(2) 推荐(0)
摘要:在Python 3.4 中,新增一个方法unwrap,用于将被装饰的函数,逐层进行解包装。 inspect.unwrap(func, *, stop=None) unwrap方法接受两个参数:func为需要解包装的函数;stop接受一个单参数的函数,作为回调函数,每次会将即将解包装的函数对象传入到回 阅读全文
posted @ 2017-05-18 21:11 BlackMatrix 阅读(2286) 评论(0) 推荐(0)
摘要:看《Python cookbook》的时候,第9.5部分,“定义一个属性可由用户修改的装饰器”,有个装饰器理解起来花了一些时间,做个笔记免得二刷这本书的时候忘了 完整代码:https://github.com/blackmatrix7/python-learning/blob/master/pyth 阅读全文
posted @ 2017-05-13 22:59 BlackMatrix 阅读(683) 评论(0) 推荐(0)
摘要:先上结论: 下面,使用一些例子,对上述结论进行检测、验证。 测试的例子中,我们创建一个装饰器、一个函数及一个类,这个类包含:实例方法、类方法、静态方法及被装饰器装饰的方法。 完整代码: https://github.com/blackmatrix7/python-learning/blob/mast 阅读全文
posted @ 2017-05-12 21:29 BlackMatrix 阅读(41776) 评论(1) 推荐(3)
摘要:需要先安装freetds 先用 brew list 查看已经安装的包 如果已经安装freetds,则使用 brew uninstall freetds先卸载 brew unlink freetds brew uninstall freetds 再安装 0.91版本 brew install free 阅读全文
posted @ 2017-04-21 14:10 BlackMatrix 阅读(4361) 评论(0) 推荐(1)
摘要:前言 随着项目业务需求的不断变更,数据库的表结构修改难以避免,此时就需要对数据库的修改加以记录和控制,便于项目的版本管理和随意的升级和降级。 Alembic就可以很好的解决这个问题。Alembic是SQLAlchemy作者开发的Python数据库版本管理工具。 安装 通过pip命令安装,如果使用虚拟 阅读全文
posted @ 2016-12-30 13:36 BlackMatrix 阅读(9064) 评论(1) 推荐(2)
摘要:Python 3.4 之后支持原生的虚拟环境配置(3.3的虚拟环境不支持pip),把配置过程记录一下备忘。 1.创建虚拟环境 在控制台中,使用cd目录,切换到需要创建虚拟环境的目录。 使用如下命令,在当前目录创建虚拟环境。 如 创建成功后,在目录下,有如下文件: Windows: 2.激活虚拟环境 阅读全文
posted @ 2016-10-08 14:54 BlackMatrix 阅读(5684) 评论(0) 推荐(0)
摘要:特性(property) 特性是对类的一个特定属性进行拦截,在操作这个属性时,执行特定的函数,对属性的操作进行拦截。 特性的实现 特性使用property类来实现,也可以使用property装饰器实现,二者本质是一样的。 property类的__init__函数接收4个参数,来实现属性的获取、赋值、 阅读全文
posted @ 2016-08-31 15:07 BlackMatrix 阅读(4638) 评论(0) 推荐(1)
摘要:__getattr____getattr__在当前主流的Python版本中都可用,重载__getattr__方法对类及其实例未定义的属性有效。也就属性是说,如果访问的属性存在,就不会调用__getattr__方法。这个属性的存在,包括类属性和实例属性。 Python官方文档的定义 Called wh 阅读全文
posted @ 2016-07-18 16:40 BlackMatrix 阅读(10995) 评论(3) 推荐(6)
摘要:在Python的新式类中,方法解析顺序并非是广度优先的算法,而是采用C3算法,只是在某些情况下,C3算法的结果恰巧符合广度优先算法的结果。 可以通过代码来验证下: 从第一段代码的运行结果来看,与广度优先的算法结果恰巧相同,但也只是恰巧相同,不等于就是广度优先的算法。 通过对代码进行修改可以证实: 将 阅读全文
posted @ 2016-07-05 16:59 BlackMatrix 阅读(2898) 评论(1) 推荐(0)
摘要:1.新式类与经典类 在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性;反之,即不由任意内置类型派生出的类,则称之为“经典类”。 “新式类”和“经典类”的区分在Python 3之后就已经不存在,在Pytho 阅读全文
posted @ 2016-06-30 19:50 BlackMatrix 阅读(17202) 评论(0) 推荐(5)
摘要:Python的类和类实例都是可变对象,可以随时给属性赋值,并且在原处修改。 在对类属性进行修改时需要特别小心,因为所有的类实例都继承共享类属性,除非实例本身存在和类属性同名的属性。对类属性进行修改,会影响到所有由这个类生成的实例。 运行结果: 代码中,将类属性CA.cls_pre 重新赋值为 'cc 阅读全文
posted @ 2016-06-26 19:36 BlackMatrix 阅读(9142) 评论(0) 推荐(0)