1 def 1:2 pass
3
4 def 2:5 pass
6
7 def 3:8 pass
从Python初学我们习惯的风格就是如上图,把函数方法直接放到全局来写,这的确是最简单易懂的方式。但随着我们的深入学习,如果一个.py文件中有几十个全局函数时,我们开始头疼了,在哪里找我想要的函数,难道次次都要Ctrl+左键吗?
classMySport1:def __init__(self):pass
defPingpong(self):pass
defBasketball(self,player):pass
defRun_MySport1:
sport=MySport1()
sport.Pingpong()
sport.Basketball(myself)classMySport2:def __init__(self):pass
defSport1(self):pass
defSport2(self):pass
defRun_MySport2:
sport=MySport2()
sport.Sport1()
sport.Sport2()
其实Python给了足够的自由,但是对于一个框架化的代码,是利于项目开发移植,利于不同时期不同工程师维护的,其风格应是整洁简明。我比较喜欢图2我自己写的风格,通过对象化的类进行分类,利于代码追踪和维护。这样的封装对于多个.py文件的拓展使用还是很有用的。因为类中属性是个很有用的东西。类结束后面,我喜欢跟一个全局函数,用来表示调用此类的步骤的一个例子,作为后面的参考,以免长期后对代码的遗忘。
def __init__(self):
self.csvFileName= 'setting.json'self.csvFilePath= 'C:' #默认与程序同根目录,暂不用
#通过JSON文件,配置绘图属性,X轴点数、Y轴...,这里简单声明属性。
self.map_X =0
self.map_Y=0
self.map_Z=0
self.map_Step= 1self.my_file={}
self.my_mode_HeatMap={}
self.my_mode_ScatterPlot={}defSet_JSON(self):"""配置属性 编码形式UTF-8,无BOM"""
#json文件报错不能编码,应当用编辑器保存json格式为无COM的utf-8
with open(self.csvFileName, 'r') as f:
file_p= json.loads(f.read() ) #,encoding='utf-8'
print file_p['file']['name']#字典应对多元素的数据整理,调用方法 self.my_file(csv_filename)
self.my_file={"csv_filename": file_p['file']['name'],"csvFilePath": file_p['file']['path'],"draw_mode": file_p['file']['draw_mode'],"is_savefig": file_p['file']['save_fig'],"fig_format": file_p['file']['fig_format']
}
外部习惯用JSON等作配置文件,以供操作员修改某些参数,又不需其修改程序时,我们需要读取JSON文件。我发现用字典更容易将这些相关的参数分类,否者如果有几百个参数需要,总不能写几百的属性吧,那写属性都比功能代码要长喽。
.json文件的内容如下
{"file":
{"name": "ABC.csv","path": "C:/AA/BB/CC/DD","draw_mode": 0,"save_fig": "False","fig_format": ".png"},
}
这样“file”作为一个字典名,"name"为其中一个键,"ABC.csv"为其键对应的值。这样字典就能分别提取到所有需要的参数,键名可以根据自己需要再次封装。其实,还有另一个更好的思路,那就是读取JSON文件,后自动生成相应属性并赋值,这样的好如果在外部追加JSON文件的参数,内部赋值就可以不用添加新的属性或是字典来配对。但我还没能实现,有待研究。