读书笔记
幽默的荆轲君
今天就是生命——是惟一你能确知的生命。
展开
-
快速阅读 Classic Computer Science Problems in Python(1.Small problems)
斐波那契(从递归,到优化递归,到迭代) 压缩字符 “ATG” 24bits => 001110 6bits a = 1 a<<2 a|=0b00 Unbreakable encryption def decrypt(key1: int, key2: int) -> str: decrypted: int = key1 ^ key2 # XOR temp: bytes = decrypted.to_bytes((decrypted.bit_length()+ 7) // 8,原创 2020-09-01 08:17:21 · 237 阅读 · 0 评论 -
effective python 读书笔记 之22 ——为什么要用类?
尽量用辅助类维护程序的状态,而不是用字典或者数组 起因是这样的需求: 根据输入的名字和成绩,计算平均成绩。 然后根据输入的名字和成绩以及学科,分别计算平均成绩。 然后根据输入的名字和成绩以及学科和权重,分别计算平均成绩。 因为需求不断的变化,导致维护成本不断的提高。 这个过程中: 1.如果用字典的话,会导致业务逻辑变得非常复杂,难以理解,而且如果后面加的东西越多,会导...原创 2018-08-02 09:29:22 · 374 阅读 · 0 评论 -
改善python程序的91个建议读书笔记(1)
理解Pythonic概念 编写Pythonic代码 理解python与C语言的不同 理解Pythonic概念简单,美,唯一的方法.实现易于解释. 举例1:def quicksort(array): less=[]; greater=[] if len(array) <= 1: return array pivot = array.pop() for x in原创 2018-01-10 17:26:18 · 352 阅读 · 0 评论 -
改善python程序的91个建议读书笔记(5)
建议13尽量转换为浮点类型后再做除法 建议14警惕eval的安全漏洞 建议15使用enumerate获取序列迭代的索引和值 建议16分清 与is的使用场景 建议17考虑兼容性尽可能使用Unicode 示例1 分析 示例二分析 建议18构建合理的包层次管理module 第三章 基础语法 建议19有节制的使用fromimport 语句 建议20优先使用absolute import 来导入模块原创 2018-01-17 20:32:22 · 353 阅读 · 0 评论 -
python 变量赋值引用的一点学习笔记
变量保存的是引用,这一点对 Python 编程有很多实际的影响。 简单的赋值不创建副本。 举例: a = 1 对 += 或 *= 所做的增量赋值来说,如果左边的变量绑定的是不可变 对象,会创建新对象;如果是可变对象,会就地修改。 举例: a = [1,2,3] b = a a += [1] [1,2,3,1] a is b # True a = (2,3) b = a #(原创 2018-01-25 16:34:24 · 453 阅读 · 0 评论 -
vim实用技巧读书笔记(7)
技巧31 重复上次的Ex命令 .命令可以重复上次的普通模式命令,然而,如果想重复上次的Ex命令的话,我们得使用@:才行,知道如何回退上次的命令永远是有价值的. 我们见识过了如果用.命令重复上次的修改,但是 . 命令不会重复由vim命令行中做出的修改,作为替代,我们可以使用@:来重复上次的Ex命令 例如:下面两条命令在遍历缓冲区列表的条目时非常有用,用:bn[ext]可以在列表中逐项正向移动,原创 2018-01-16 19:03:01 · 337 阅读 · 0 评论 -
vim实用技巧读书笔记(6)
技巧26 在长短不一的高亮块后添加文本 列块可视模式在操作由行列组成的方形代码块时表现得很好,然而,它并不仅限于操作方形的文本区域. 举例: var foo = 1; var bar = 'a' ; var foobar = foo + bar; 这段代码中有连续3行,每行的长度各不相同,我们想在每行的结尾添加一个分号.在技巧2中,我们使用了.命令解决了此问题,不过用列块可视模式也可原创 2018-01-16 16:00:26 · 316 阅读 · 0 评论 -
vim实用技巧读书笔记(5)
技巧21 选择高亮选区 vim有三种可视模式,在面向字符的可视模式中,我们能够选择任意的字符范围.不论它是单个字符,还是位于一行内,或是跨若干行的指定字符范围.都没问题.该模式适用于操作单词或短语.如果我们想对整行进行操作,我们可以改用面向行的可视模式.而面向列块的可视模式则允许我们对文档的列块进行操作.列块可视模式非常特别. 激活可视模式 v键是通往可视模式的大门. 按v可以激活面向字符的原创 2018-01-15 19:56:47 · 309 阅读 · 0 评论 -
改善python程序的91个建议读书笔记(4)
建议10充分利用lazy evaluation的特性 建议11理解枚举替代实现的缺陷 建议12不推荐使用type来进行类型检查 建议10:充分利用lazy evaluation的特性 lazy evaluation常被译为”延迟计算”或”惰性计算”,指的是仅仅在真正需要执行的时候才计算表达式的值.好处有两点: 1.避免不必要的计算,带来性能上的提升. if x or原创 2018-01-13 11:58:02 · 284 阅读 · 0 评论 -
vim实用技巧读书笔记(4)
技巧16 随时随地做运算 表达式寄存器允许我们做一些运算,并把运算结果直接插入到文档中 表达式寄存器是一个另类,可以用来执行一段vim脚本,并返回结果.在本节中,我们将把它当做计算器使用.传给他一个简单的表达式,比方说1+1,它就会给出结果2. 我们可以用 = 符号指明使用表达式寄存器. 在插入模式中,输入=就可以访问这一寄存器.这条命令会在屏幕下方显示一个提示符,我们可以在其后输入要执行的原创 2018-01-13 11:25:30 · 302 阅读 · 0 评论 -
vim实用技巧读书笔记(3)
能够重复,就别用次数 在处理某些特定工作时,使用次数可以使按键次数变得最少,不过我们并不是非得这样不可,我们需要认真考虑次数与重复各自的优缺点. d2w 2dw 都可以, 但是dw.的粒度更小. 每次只作用一个单词.多按了一次.命令怎么办?没关系,只要按一次u键就可以回退回来. 只在必要时使用次数 假设我们想把文字”I have a couple of questions”改为”I hav原创 2018-01-12 20:13:08 · 332 阅读 · 0 评论 -
改善python程序的91个建议读书笔记(3)
建议7.将常量集中到一个文件 Python的内建命名空间是支持一小部分常量的,如True,False,None.只是Python没有提供定义常量的直接方式而已.那么在Python中应该如何使用常量呢?一般来说有以下两种方法: 1.通过命名风格来提醒使用者该变量代表的意义为常量.如常量名所有字母大写,用下划线连接各个单词,如MAX_OVERFLOW,TOTAL.而这种方式并没有实现真正的常量,其原创 2018-01-12 16:45:00 · 304 阅读 · 0 评论 -
改善python程序的91个建议读书笔记(2)
建议4:在代码中适当添加注释 python中有3种形式的代码注释:块注释,行注释以及文档注释(docstring).这三种形式的惯用法大概有如下几种: 1.使用块或者行注释的时候仅仅注释那些复杂的操作,算法.还有可能别人难以理解的技巧或者不够一目了然的代码. 2.注释和代码隔开一定的距离,同时在块注释之后最好多留几行空白再写代码.下面两行的代码显然第一行的阅读性要好. x = x+1原创 2018-01-12 11:49:00 · 294 阅读 · 0 评论