- 博客(5)
- 收藏
- 关注
原创 Python 深入探究字典和集合的实现原理
字典和集合的实现原理 泛映射类型 只有可散列的数据类型才能用作这些映射里的键。 如果一个对象是可散列的,那么在这个对象的生命周期中,它的散列值是不变的,而且这个对象需要实现 __hash__()方 法。另外可散列对象还要有 __eq__()方法,这样才能跟其他键做比较。 因此,原子不可变数据类型是可散列的。用户自定义的类型的对象一般是可散列的,散列值就是id()的返回值,但如果其实现了__eq__()方法,并且方法中用到了这个对象的内部状态,那么只有当这些内部状态都不可变时,对象才是可散列的。 字典的常用构
2020-08-19 08:45:12 450
原创 Python 函数装饰器和闭包
函数装饰器和闭包 装饰器 简介 装饰器是一个可调用对象,其参数是另一个函数,作用是返回一个被处理过或替换的函数。 它属于一种语法糖,以下两种写法是等价的 # 1 @decorate def target(): print('running target') #2 def target(): print('running target') target = decorate(target) 装饰器的执行时机 python中,装饰器在被装饰的函数定义后立即运行。这通常发生在导入模块时。 使用
2020-08-19 08:43:20 158
原创 Python 序列解包中的tricky point
序列解包中的tricky point 奇怪的现象 先来看一个违反直觉的程序 a = [1,2,3,4,5,6,7,8,9] b = a.copy() a[:-3], a[-3:] = a[-3:],a[:-3] b[:6], b[6:] = b[6:],b[:6] 这里乍看起来a和b的运行结果应该是一样的,可是实际运行程序却得到了这样的结果 简化问题 为了细探发生了什么,我决定分解这个式子,一步一步地进行。 然而这次竟然又得到了与刚刚不同的结果。不过仔细观察之下原因已经十分清楚了,本次的程序和前一个程序
2020-08-19 08:37:38 258
原创 VS中库的添加及相关概念
在编写程序代码时,我们常常需要用到一些下载的库,比如处理计算机视觉领域常用的Opencv库,那么这些库应该如何被添加到自己的VS项目中呢。为此我们首先了解一下VS中与这一操作有关的相关概念。 VS中有关添加库的概念 要想添加一个库,主要需要对VS中的属性管理器中的相关内容进行修改,要修改的内容主要包括以下几个部分: 包含目录 包含目录是你所要添加的库中的头文件所在的地址。通俗的来说就是寻找#in...
2020-04-03 22:10:18 989
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人