对编码的理解以及Python代码小片段分享
当你觉得电脑太卡,也有可能是你该换鼠标了。同样,新的生活隐藏在表象之下。——Wicos
一,思考 最近为了恰饭,的确在Python上下了不少的功夫,主要围绕在数据的采集,数据处理,WS连接等方面。也写了很多无用的代码,走了一些弯路,因此记录下来一方面是防止自己忘记,另一方面也能时刻提醒自己,不再走弯路。 首先,一个软件,包含许多功能,每一个功能皆由若干个子模块组成,每一个子模块之间互相配合,功能之间也能互相配合。虽然看起来是包含的关系,实则处处相通。终究都逃不过软件设计的流程,简单的总结为:分析设计,编码,测试,交付。 在分析的过程中要对软件的功能,数据做好规划,在后期的开发过程中才能少走弯路。此为万物的初始,良好的开端等于成功的一半。 在编码的过程中,由于代码是可复用的,同一个层次的功能应该使用一套代码来实现。减少工作量,比如开发数据发送的功能:数据的发送主要由以下几个步骤,1,建立连接:该过程中要涉及到身份的认证。2,数据传输:传输的数据编码方式,采用什么协议等。3,断开连接:在数据传送完毕之后断开连接,释放资源。在A功能中数据发送可以调用它,在B功能中数据发送同样可以调用它。编码中还需要注意数据的“同步利用”,主要在数据库的设计,数据文件的存储方面,每次存储数据时,相同的数据不同的类型可以采用同一个数据库来存储,将类型修改即可,这样调用起来更方便。变量的命名同样重要,例如我习惯于PHP的驼峰法命名方式,在编写Python的代码时也习惯使用驼峰法命名,有人喜欢下划线方式命名,各有千秋。只要注意变量区分大小写,不要使用保留的关键字。python遵循至繁归于至简(“Simplicity is the ultimate sophistication”),但是代码量的多少不能绝对代表一个代码质量的好坏,在变量命名方面,myName 绝对比mN好,同样的my_name比m_n好。即使后者代码量更少,但是不便于阅读。我始终认同一句话,代码时写给人看的,顺便能在机器上运行。 测试过程也尤为重要,因为你无法预测使用者会怎么使用它,好比你做出来一条鱼,按照常理这条鱼时用来吃的,而不是用来划船或者开锁的,更不是通过鼻孔吃下去的。因此测试的过程要尽可能包含所有可能的情况。 路漫漫其修远兮,要多向大牛学习啊! 二:小代码片段 1,操作json,读写
import json def readJson(filepath): with open(filepath,’rb’) as fp: return json.load(fp) def writeJson(filepath,data): with open(filepath,’w+’,encoding=’utf-8’) as fp: json.dump(data, fp, indent=4)
2,通过字典的value获取字典的key
1)dictKey = list(dict.values().index(dictValue))#根据list来获取,缺点是value必须时唯一的 2)dictKey = [dictKey for dictKey in dict if a[dictKey]==dictValue][0] #万能方法
3,判断输入的内容是否符合某条件
#判断是否大于1 a = True if in > 1 else False #模拟abs() x = a - b if a > b else b - a
4,合理利用set set在python中理解为集合
创建它:a = set() 或者 a = {1,2,…,n} 创建一个空的集合必须使用set(),而不是 {},后者是用来创建空字典的。 a = {1,2,3} b = {3,4,5} a&b = {3}#交集 ab = {1,2,3,4,5} #并集 a^b = {1,2,4,5} #并集相对交集的补集
5,元组的利用
for dictKey,dictValue in dict.items(): print(dictKey,dictValue) 其中dict.items()就是将dict转化为一个dict_items,内部由元组组成,每个元组第一个对应字典的key第二个对应字典的value 因此本质还是对tuple的操作。
6,join()的使用
join()用来将序列中的字符用指定的字符连接生成新的字符串 比如: a = (‘I am wicos’,’1000’) b = “-“ c = b.join(a) print(c) –>I an wicos-1000
以上,暂时能想到的就以上6个,未来遇到了再补上,最近都没什么机会读书,一定要抽出时间按来阅读。分享一首一如既往爱的摇滚音乐。——wicos 2020.3.4凌晨