SF
编程进阶之路
编程进阶之路
注册登录
关注博客
注册登录
主页
关于
RSS
CPython中处理 is 与 is not 语句
weapon
2021-07-28
阅读 2 分钟
1.9k
文档中 [链接] 表示对于 x is y 当且仅当两个变量指向同一对象时才为真。对象可以通过 id() 函数来查看它的身份(id() 函数返回了对象在内存中的映射)。
请谨慎使用 datetime.utcnow()
weapon
2021-07-20
阅读 2 分钟
5.9k
正如 utcnow() 文档 所表明的那样,它返回的是 naive time ,Naive datetime 实例被认为为表示本地时间,因此它的时间戳会比使用 now(None) 相差的时间正好是该电脑所在时区。
动手来自己实现一下 namedtuple
weapon
2020-05-29
阅读 3 分钟
2k
namedtuple 是 collections 模块下的一个功能,它是类工厂函数,能返回 tuple 子类,允许通过字段名向元组中取值,性能上接近于元组。
Python 中 staticmethod 和 classmethod 原理探究
weapon
2020-05-25
阅读 2 分钟
2.3k
文章 《Python中 property 的实现原理及实现纯 Python 版》 中探究了 property 的实现原理。如果能理解那边描述符的使用方式,那也能很快理解本篇中的 staticmethod 和 classmethod 。
Python中 property 的实现原理及实现纯 Python 版
weapon
2020-05-24
阅读 3 分钟
2.3k
为了能够实现访问属性就调用某个函数,这里将利用 描述符对象 作为本文的实现起点,当某个类定义了 __get__ 方法后,通过其方法名称可以直接调用 __get__ ,例如:
字符串在Python内部是如何省内存的
weapon
2020-02-03
阅读 3 分钟
3.1k
Python3 起,str 就采用了 Unicode 编码(注意这里并不是 utf8 编码,尽管 .py 文件默认编码是 utf8 )。 每个标准 Unicode 字符占用 4 个字节。这对于内存来说,无疑是一种浪费。
Python 中 is 语法带来的误解
weapon
2019-05-06
阅读 1 分钟
2.2k
起步 Python 的成功一个原因是它的可读性,代码清晰易懂,更容易被人类所理解,但有时可读性会产生误解。 假如要判断一个变量是不是 17,那可以: {代码...} x 是 17 肯定是比 x == 17 更加口语化的。 is的误解 但是如果你尝试: {代码...} 这个判断不见得管用。is 用来检查左侧和右侧是否是完全相同的对象。如果有两个不...
Python 模块源码分析:queue 队列
weapon
2019-04-05
阅读 6 分钟
2.3k
从这初始化函数能得到哪些信息呢?首先,队列是可以设置其容量大小的,并且具体的底层存放元素的它使用了 collections.deque() 双端列表的数据结构,这使得能很方便的做先进先出操作。这里还特地抽象为 _init 函数是为了方便其子类进行覆盖,允许子类使用其他结构来存放元素(比如优先队列使用了 list)。
Python 的 heapq 模块源码分析
weapon
2019-01-07
阅读 5 分钟
5.7k
堆是一个树状的数据结构,其中的子节点都与父母排序顺序关系。因为堆排序中的树是满二叉树,因此可以用列表来表示树的结构,使得元素 N 的子元素位于 2N + 1 和 2N + 2 的位置(对于从零开始的索引)。
raise 与 raise ... from 的区别
weapon
2018-12-11
阅读 2 分钟
3.4k
起步 Python 的 raise 和 raise from 之间的区别是什么? {代码...} 输出: {代码...} 而 raise from : {代码...} 输出: {代码...} 分析 不同之处在于,from 会为异常对象设置 __cause__ 属性表明异常的是由谁直接引起的。 处理异常时发生了新的异常,在不使用 from 时更倾向于新异常与正在处理的异常没有关联。而 fro...
Python 的 enum 模块源码分析
weapon
2018-12-10
阅读 6 分钟
3k
这部分我的第一个想法是去控制 __dict__ 中的 key 。但这样的方式并不好,__dict__ 范围大,它包含该类的所有属性和方法。而不单单是枚举的命名空间。我在源码中发现 enum 使用另一个方法。通过 __prepare__ 魔术方法可以返回一个类字典实例,在该实例使用 __prepare__ 魔术方法自定义命名空间,在该空间内限定成员名不...
Python 的枚举类型
weapon
2018-12-10
阅读 3 分钟
22.7k
枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。在没有专门提供枚举类型的时候我们是怎么做呢,一般就通过字典或类来实现:
Python中几种属性访问的区别
weapon
2018-11-16
阅读 3 分钟
4.6k
python的提供一系列和属性访问有关的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ 。本文阐述它们的区别和用法。
用Python实现读写锁
weapon
2018-11-04
阅读 4 分钟
11.8k
Python 提供的多线程模型中并没有提供读写锁,读写锁相对于单纯的互斥锁,适用性更高,可以多个线程同时占用读模式的读写锁,但是只能一个线程占用写模式的读写锁。
让Python中类的属性具有惰性求值的能力
weapon
2018-08-15
阅读 2 分钟
3.4k
我们希望将一个只读的属性定义为 property 属性方法,只有在访问它时才进行计算,但是,又希望把计算出的值缓存起来,不要每次访问它时都重新计算。
深度剖析凭什么python中整型不会溢出
weapon
2018-06-14
阅读 6 分钟
16.5k
在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数。在python3后,统一使用了长整型。这也是吸引科研人员的一部分了,适合大数据运算,不会溢出,也不会有其他语言那样还分短整型,整型,长整型...因此python就降低其他行业的学习门槛了。
深度剖析isinstance的检查机制
weapon
2018-05-03
阅读 4 分钟
2.1k
通过内建方法 isinstance(object, classinfo) 可以判断一个对象是否是某个类的实例。但你是否想过关于鸭子协议的对象是如何进行判断的呢? 比如 list 类的父类是继 object 类的,但通过 isinstance([], typing.Iterable) 返回的却是真,难道 list 是可迭代的子类?学过Python的面向对象应该知道,list的基类是object的。
神经网络NN算法(理论篇)
weapon
2017-12-28
阅读 4 分钟
11.6k
神经网络算法( Neural Network )是机器学习中非常非常重要的算法。这是整个深度学习的核心算法,深度学习就是根据神经网络算法进行的一个延伸。理解这个算法的是怎么工作也能为后续的学习打下一个很好的基础。
从零开始构造邻近分类器KNN
weapon
2017-12-28
阅读 2 分钟
1.9k
起步 本章介绍如何自行构造 KNN 分类器,这个分类器的实现上算是比较简单的了。不过这可能需要你之前阅读过这方面的知识。 前置阅读 分类算法之邻近算法:KNN(理论篇) 分类算法之邻近算法:KNN(应用篇) 欧拉公式衡量距离 关于距离的测量方式有多种,这边采用欧拉距离的测量方式: $$ d(x,y) = \sqrt{\sum_{i=0}^n(x_i-y...
分类算法之邻近算法:KNN(应用篇)
weapon
2017-12-09
阅读 1 分钟
4.7k
它有四个特征,萼片长度,萼片宽度,花瓣长度,花瓣宽度 (sepal length, sepal width, petal length and petal width)。
从零开始构造决策树(python)
weapon
2017-12-07
阅读 11 分钟
10.7k
起步 本章介绍如何不利用第三方库,仅用python自带的标准库来构造一个决策树。不过这可能需要你之前阅读过这方面的知识。 前置阅读 分类算法之决策树(理论篇) 分类算法之决策树(应用篇) 本文使用将使用《应用篇》中的训练集,向量特征仅有 0 和 1 两种情况。 关于熵(entropy)的一些计算 对于熵,根据前面提到的计算...
分类算法之决策树(应用篇)
weapon
2017-12-05
阅读 4 分钟
8.3k
起步 在理论篇我们介绍了决策树的构建和一些关于熵的计算方法,这篇文章将根据一个例子,用代码上来实现决策树。 实验环境 操作系统: win10 64 编程语言: Python3.6 用到的第三方模块有: {代码...} 数据源 为了方便理解和架设,我们用理论篇中买电脑的例子: 将这些记录保存成 csv 文件: {代码...} 这些数据就是这次...
分类算法之决策树(理论篇)
weapon
2017-12-05
阅读 3 分钟
10.3k
决策树(decision tree)是一个树结构,可以是二叉树或非二叉树,也可以把他看作是 if-else 规则的集合,也可以认为是在特征空间上的条件概率分布。
python中的无穷大
weapon
2017-11-08
阅读 2 分钟
19.6k
python中整型不用担心溢出,因为python理论上可以表示无限大的整数,直到把内存挤爆。而无穷大在编程中常常需要的。比如,从一组数字中筛选出最小的数字。一般使用一个临时变量用于存储最后结果,变量去逐个比较和不断地更新。而这临时变量一般要初始无穷大或者去第一个元素的值。
python中精确的浮点数运算
weapon
2017-11-02
阅读 1 分钟
7.5k
起步 浮点数的一个普遍的问题是它们不能精确的表示十进制数。 {代码...} 这是由于底层 CPU 和 IEEE 754 标准通过自己的浮点单位去执行算术时的特征。看似有穷的小数, 在计算机的二进制表示里却是无穷的。 一般情况下,这一点点的小误差是允许存在的。如果不能容忍这种误差(比如金融领域),那么就要考虑用一些途径来解...
使用C/C++编写Python模块扩展
weapon
2017-10-24
阅读 2 分钟
9k
由于python在底层运算中会对每个运算做类型检查, 这就影响了运行的性能,而利用扩展, 可以避免这样的情况, 获得优越的执行性能,利用Python提供的C API,如宏,类型,函数等来编写扩展。
《流畅的python》阅读笔记
weapon
2017-10-16
阅读 39 分钟
29.6k
《流畅的python》是一本适合python进阶的书, 里面介绍的基本都是高级的python用法. 对于初学python的人来说, 基础大概也就够用了, 但往往由于够用让他们忘了深入, 去精通. 我们希望全面了解这个语言的能力边界, 可能一些高级的特性并不能马上掌握使用, 因此这本书是工作之余, 还有余力的人来阅读, 我这边就将其有用, 精...