在 Python 正则表达式模块中逃跑(escape
在编程语言中,有常见的符号被赋予了特殊的意义,例如小数点.
,在正则表达式里面表示任意一个非换行符的字符;小于号<
在 html 中表示标签。
但有时候,我们只想让这些符号表示它本来的意思,不想让它的特殊意义表露出来,应该怎么办?
在编程语言中,有常见的符号被赋予了特殊的意义,例如小数点.
,在正则表达式里面表示任意一个非换行符的字符;小于号<
在 html 中表示标签。
但有时候,我们只想让这些符号表示它本来的意思,不想让它的特殊意义表露出来,应该怎么办?
我们知道,读取 Python 字典时,如果某个 Key 不存在,Python 就会报错,如下图所示:
为了防止它报错,我们可以使用.get()
方法:
但每次都要写.get()
稍显麻烦。于是我们可以通过自己实现一个自定义的字典对象,来解决这个问题。
经常使用 Linux 的同学,肯定对|
这个符号不陌生,这个符号是 Linux 的管道符号,可以把左边的数据传递给右边。
我们知道,如果我们在 Python 中想把一段数据持久化到硬盘上,最简单的办法就是写文件:
1 | with open('data.txt', 'w', encoding='utf-8') as f: |
但这样做有一个弊端,就是在读取数据的时候,我们把整个数据读入内存以后,还需要单独写一段代码,用来区分哪里是username
对应的值,哪些是password
对应的值。
二十几种设计模式中,单例模式是最简单最常用的一种。在其他语言里面实现单例模式要写不少代码,但是在 Python 里面,有一种非常简单的单例模式写法。
在上一篇文章中,我们讲到了,使用itertools.tee
可以让一个生成器被多次完整遍历:
1 | import itertools |
但是,我们说到itertools.tee
有两个弊端,其一,如果分裂出来的多个生成器是按顺序执行的,其中一个完整遍历了再遍历第二个,那么就会导致内存中堆积大量的数据。
要解释这个问题的原因,我们就要理解itertools.tee
背后的原理。