随笔分类 - Python
摘要:正则其实很简单,本文以 Python 语言为基础,全面介绍了 Python 中正则的使用及各种坑。
阅读全文
摘要:洗牌算法是一个简单而实用的算法,Python 标准库中已有实现。另外分析了标准库中随机取样算法的实现。
阅读全文
摘要:plt1, = plt.plot(x, y) 变量后面加逗号?书上莫不是写错了吧!
阅读全文
摘要:Python 支持多态吗?鸭子类型又是啥?
阅读全文
摘要:你知道怎么把对象当方法用吗?
阅读全文
摘要:虽然设计模式与语言无关,但这并不意味着每一个模式都能在每一门语言中使用。23 个模式,有 16 个在动态语言中“不见了,或者简化了”。策略模式就是被简化了的设计模式之一。
阅读全文
摘要:其他语言中,if 后都是跟条件表达式,为什么 Python 中可以跟任意对象?交换变量 b, a = a, b 为什么可以这么写?
阅读全文
摘要:引言 logging 的基本用法网上很多,这里就不介绍了。在引入正文之前,先来看一个需求: 假设需要将某功能封装成类库供他人使用,如何处理类库中的日志? 数年前在一个 C# 开发的项目中,我用了这样的方法:定义一个 logging 基类,所有需要用到日志的类都继承这个基类,这个基类中定义一个 Log
阅读全文
摘要:GitHub 上有一个名为《What the f ck Python!》的项目,这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子以及鲜为人知的功能特性,并尝试讨论这些现象背后真正的原理! 原版地址: "https://github.com/satwikkansal/wtfpyt
阅读全文
摘要:GitHub 上有一个名为《What the f*ck Python!》的项目,这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子以及鲜为人知的功能特性, 并尝试讨论这些现象背后真正的原理!
阅读全文
摘要:关于 logging.NullHandler,网上大多数的解释就一句话:该 Handler 实例会忽略 error messages,通常被想使用 logging 的 library 开发者使用来避免'No handlers could be found for logger XXX'信息的出现。其实就是用了 logging 的工厂特性,在 library 中定义一个logger 但并不给具体的 Handler,具体的实现留给调用者决定。
阅读全文
摘要:S.strip(chars=None) strip 函数用于去除字符串首尾的空格,当 chars 不为 None 时,则删除字符串首尾的 chars 中的字符。 当 chars=None 时,去除首尾空格,没啥好说的,我们来看 chars 不为 None 时的情况。 str = 'abc123abc
阅读全文
摘要:返回当前工作目录 os.getcwd() 返回 path 的绝对路径 os.path.abspath(path) os.path.abspath('.') 相当于 os.getcwd() 分割目录和文件名 返回一个 tuple(目录, 文件名),以最后一个斜杠作为分割 os.path.split(p
阅读全文
摘要:tesserocr 是 python 的一个 OCR 库,windows 下安装 tesserocr 直接用 pip 安装是不可以的,会报错,只能用 .whl 的方式安装。安装 .whl 时,可能遇到 failed to create process 报错,pip 版本等级过低,中文路径无法识别等问题,给出了解决方案。
阅读全文
摘要:散列表 Python 用散列表来实现 dict。散列表其实是一个稀疏数组(总是有空白元素的数组称为稀疏数组)。在一般书中,散列表里的单元通常叫做表元(bucket)。在 dict 的散列表当中,每个键值对都占用一个表元,每个表元都有两个部分,一个是对键的引用,一个是对值的引用。因为每个表元的大小一致
阅读全文
摘要:增量赋值运算符有 += 和 *=。+= 背后的特殊方法是 __iadd__,如果一个类没有实现 __iadd__ 方法,Python 会退一步调用 __add__ 方法。这两个方法的区别在于,__iadd__ 为就地改动,不会改变原值的内存地址,而 __add__ 方法会得到一个新对象。
阅读全文
摘要:zip() 接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个 tuple,然后返回由这些 tuple 组成的 list。 若传入参数的长度不等,则返回 list 的长度和参数中长度最短的对象相同。 利用 * 号操作符,可以将 list 解压。 Python3.0开始,zip()函数已经
阅读全文