python
文章平均质量分 63
随风奔跑尿飞扬
在梦想的道路上越摔越疼~
有提供工作机会老板请发邮件到 1403539044@qq.com
展开
-
mac安装 facebook faiss
Faiss是Facebook AI团队开源的针对聚类和相似性搜索库,为稠密向量提供高效相似度搜索和聚类,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库。它包含多种搜索任意大小向量集(备注:向量集大小由RAM内存决定)的算法,以及用于算法评估和参数调整的支持代码。Faiss用C++编写,并提供与Numpy完美衔接的Python接口。除此以外,对一些核心算法提供了GPU实现。相关介绍参考《Fa...原创 2020-04-27 09:47:45 · 1589 阅读 · 0 评论 -
解析python列表索引操作、切片操作的原理
列表元素的获取可以使用索引或者切片,这个时候调用的是__getitem__方法a[i] # 这是一个简单的数字索引,使用即元素“位置”获取元素值a[i:j];a[i:j:k] # 这是切片操作,i为起始位置,j为结束位置,k为步进值当使用赋值表达式对元素进行赋值时,调用的时__setitem__方法a[0]=10#也可以使用这样的方法替换多个元素a[0,2]=[11,12]当使用...原创 2019-07-01 17:52:51 · 1197 阅读 · 2 评论 -
解析python中的__hash__方法与比较运算符
hashpython中有两个哈希库,分别是hashlib和zlib。对于复杂的值或很大的值使用这些哈希库可以提供很大的帮助。set、frozenset和dict这些集合利用hash函数创建键,利用不可变对象的哈希值来高效查找集合中的对象。在这里不可变性是重要的一点。因为字符串类型不可变,所以set、dict可以用字符串作为键;而list则不可以作为键。object对象默认的hash是使用内...原创 2019-07-01 17:52:16 · 3694 阅读 · 0 评论 -
python中的__del__方法,内存回收和弱引用
这个方法的作用是将一个对象从内存中清除之前,可以有机会做一些清理工作。这里之所以用 “有机会” 来形容是因为这个方法是不稳定的:它并不总是在del语句删除对象时被调用,当一个对象的命名空间被删除时,它也不一定被调用。所以同样的需求最好使用上下文管理器来实现。python(Cpython)中对象会包含一个引用计数。__del__方法只有当引用技术为0时才会执行。class f: de...原创 2019-07-01 17:51:34 · 1706 阅读 · 0 评论 -
使用python实现二叉搜索树
准备我们想要创建一个二叉搜索树结构来让所有的元数据都按正确的数据存储,同时我们希望这是一个可变的结构,所以主要有以下几点:设计基本的二叉搜索树结构使用MutableSet结构作为基类。具体的介绍可参照python官方collections模块docs二叉搜索树主要有两个分支:一个分支用于存放小于当前节点的键,另一个用于存放大于当前节点的键。具体的二叉搜索树可以参照百度文库。所...原创 2019-07-01 17:48:54 · 2339 阅读 · 0 评论 -
python装饰器和横切关注点,装饰器设计模式
横切关注点指的是一些具有横越多个模块的行为,使用传统的软件开发方法不能够达到有效的模块化的一类特殊关注点。装饰器提供了不用和继承结构绑定的定义功能的方法。可以用装饰器实现程序中的某个方面,让后将装饰器应用于类、方法或者函数。横切关注点的设计通常见于日志、审计和安全相关。因为这些行为需要横跨多个模块。我们可以使用不同的装饰器来实现不同的横切需求。内置装饰器常用的用于标注类方法的内置装饰器有 ...原创 2019-07-01 17:48:03 · 151 阅读 · 0 评论 -
python抽象基类
抽象基类不包含我们需要的所有方法,其他的类会将他当作基类来使用。抽象基类为缺失的方法函数提供了签名,子类必须创建符合基类定义的接口。抽象基类可以保证一组自定义类的一致性,可以用它创建一些通用、可重用的抽象。抽象基类的核心定义在 collections.abc 中。liskov原则: 程序中原本引用父类的代码,改为引用这个父类的子类,并不会造成英雄内置对象使用的抽象基类dictMuta...原创 2019-06-10 18:08:09 · 864 阅读 · 0 评论 -
python修饰符
修饰符修饰符可以看作是属性的访问中介,修饰符对象通常在类定义时被创建。修饰符是为属性服务的。修饰符模式有两部分: 拥有者类(owner class) 和 属性修饰符(attribute descriptor)。特性是基于 拥有者类的,而修饰符与拥有者类之间没有固定的关系,所以是可以重用的。对拥有者类存在的属性进行一些修饰。可以进行类型检查,关联更新非数据修饰符需要定义 set 或者 d...原创 2019-06-10 14:55:00 · 304 阅读 · 0 评论 -
python创建不可变对象
创建不可变对象修改__setattr__创建不可变对象setattr方法掌管已有属性的赋值,和新建属性的赋值。下面重写了setattr方法,可以在常规操作下保证对象是不可变的。class F1: def __init__(self): #因为这个类修改了setattr属性,所以不能调用“=”赋值,只能调用父类的setattr方法 super().__...原创 2019-06-10 14:54:23 · 305 阅读 · 0 评论 -
python属性的计算
特性property当有对属性赋值进行操作的需求时,可以使用property。这可以将一个属性的赋值、获取、删除拆分为3个动作,分别进行不同的实现。class F1: @property #获取number属性的方法 def number(self): return self._number @numbe...原创 2019-06-10 14:52:14 · 718 阅读 · 0 评论 -
python中的__new__方法
new方法的一个用途时初始化不可变对象,方法中允许创建未初始化的对象,所以这可以在 init 方法调用之前设置对象的属性。new方法始终是一个静态方法 (staticmethod),因为他的工作创建好一个对象赋值给self。所有类的父类都是object, 所以new方法最终会调用 object._new_ 来创建一个简单的空对象。new方法最终会把除了 cls 之外的参数和关键字传递个 in...原创 2019-06-10 14:51:19 · 575 阅读 · 0 评论