工匠回忆(一)
不久之前看过《python工匠》,腾讯大佬朱磊写的,后来一段时间零零散散也会翻开看看,强烈推荐!!!
1、变量注释
变量与注释是最接近自然语言的东西,把变量与注释搞好,同样一段代码,却带来两种截然不同的体验
1.1、变量开辟的必要性
1.2、变量注意靠近使用
1.3、注意变量描述性要强、同时注意其长度
1.4、变量的命名要突出类型
1.5、注释不是代码的翻译,要传达代码无法传达的信息(eg:这一段为什么要这么写)
1.6、先写注释,后写代码
1.7、注释最好不要用于屏蔽代码,已屏蔽的只会增加阅读负担
2、数值字符串
2.1、字符的分割
2.2、判断字符串是不是纯数字
2.3、字符串的拼接
用timeit比较+连接符的运行时间,我本地相差还是比较大的,书中相差无几
2.4、布尔类型是整数类型的派生
1 print(int(True))
基于这个特性,结合聚合函数可以计算一个序列中的偶数的个数
3、容器类型
了解容器的底层实现,是非常重要的,有利于我们编出高效的代码
1、列表
列表推导式(不要写过于复杂的条件表达式、条件表达式用于生成全新的集合)
· 1.1、重要的编程思维,按需返回,而非一次性返回,使用生成器可以实现,按需返回可以提高代码的执行效率,节约内存
1.2、在列表的开头插入元素,其后的元素都要向后移动,其时间复杂度是O(N),相比而言,可以使用队列,队列是一个双向链表,其时间复杂度是O(1)
2、元组
无元组推导式,这里引出命名元组(有两种实现方式),要注意区分和数据类的差别
3、字典
3.6及其以后都变成有序的,有序字典可用于去重并保持序列中元素顺序保持不变
1 from collections import OrderedDict 2 3 a = [45, 6, 23, 145, 45, 90, 6] 4 result = OrderedDict.fromkeys(a).keys() 5 print(result)
4、集合
集合支持求差集、并集,可以是运算符也可以是方法
4.1、在集合中查找成员元素,其原理很简单,集合的底层是基于哈希表数据结构的,给出一个元素,计算他的哈希值,然后在哈希表中去寻找
在这一章节,自定义一种字典数据结构,需要继承抽象类中的MutableMapping