Python 框架化代码的学习
1 def 1:
2 pass
3
4 def 2:
5 pass
6
7 def 3:
8 pass
从Python初学我们习惯的风格就是如上图,把函数方法直接放到全局来写,这的确是最简单易懂的方式。但随着我们的深入学习,如果一个.py文件中有几十个全局函数时,我们开始头疼了,在哪里找我想要的函数,难道次次都要Ctrl+左键吗?
class MySport1:
def __init__(self):
pass def Pingpong(self):
pass def Basketball(self,player):
pass def Run_MySport1:
sport = MySport1()
sport.Pingpong()
sport.Basketball(myself) class MySport2:
def __init__(self):
pass def Sport1(self):
pass def Sport2(self):
pass def Run_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 = 1
self.my_file = {}
self.my_mode_HeatMap = {}
self.my_mode_ScatterPlot = {}
def Set_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文件的参数,内部赋值就可以不用添加新的属性或是字典来配对。但我还没能实现,有待研究。
Python 框架化代码的学习的更多相关文章
- 编写高质量代码改善python程序91个建议学习01
编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...
- Python框架之Django学习
当前标签: Django Python框架之Django学习笔记(十四) 尛鱼 2014-10-12 13:55 阅读:173 评论:0 Python框架之Django学习笔记(十三) 尛 ...
- python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题
笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...
- 10款Web开发最佳的Python框架
Python是跻身于当代IT世界最流行和代码最高效的编程语言之一.Python框架能帮助你快速启动Web应用. 1.CubicWeb CubicWeb的最重要的功能是其代码的可重用性,由一个个代码单元 ...
- 教你阅读Python开源项目代码
为什么要阅读开源代码 阅读 Python 开源项目代码主要有如下三个原因: 在工作过程中遇到一些问题 Google 和 StackOverFlow 等网站找不到解决办法,只能去翻源码. 对某些项目或者 ...
- 【Python 1-0】10个学习Python的理由以及Python的优势有哪些?
Python的由来 首发地址 Python的创始人是吉多·范罗苏姆,1989年他在阿姆斯特丹的CWI工作,圣诞节期间,吉多·范罗苏姆为了打发圣诞节的无聊,决定开发一个新的脚本解释程序,作为ABC 语言 ...
- python框架之django
python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models ...
- 第六篇:web之python框架之django
python框架之django python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django te ...
- iOS超全开源框架、项目和学习资料汇总--数据库、缓存处理、图像浏览、摄像照相视频音频篇
iOS超全开源框架.项目和学习资料汇总--数据库.缓存处理.图像浏览.摄像照相视频音频篇 感谢:Ming_en_long 的分享 大神超赞的集合,http://www.jianshu.com/p/f3 ...
随机推荐
- Linux升级python3之后yum不能正常使用解决方法一:重新配置yum源
[转]linux下yum安装及配置 分步阅读 公司使用的是linux搭建服务器,linux安装软件能够使用yum安装依赖包是一件非常简单而幸福的事情,所以这里简单介绍一下linux安装yum源流程和操 ...
- HDU 2544最短路 【dijkstra 链式前向星+优先队列优化】
最开始学最短路的时候只会用map二维数组存图,那个时候还不知道这就是矩阵存图,也不懂得效率怎么样 经过几个月的历练再回头看最短路的题, 发现图可以用链式前向星来存, 链式前向星的效率是比较高的.对于查 ...
- jupyter notebook 动态图显示
直接在import matplotlib.pyplot as plt 后面加%matplotlib,或者%matplotlib auto就可以通过弹出窗口的形式显示图片
- java中的类型转换
java中的类型转换分为两种 自动类型转换 要实现数据的自动类型转换必须同时满足下面两个条件 两种数据类型彼此兼容 目标类型的取值范围大于原类型范围 强制类型转换 当两种数据类型彼此不兼容,或者说目标 ...
- apache----------在apache环境下安装https支持
1.安装mod_ssl yum install mod_ssl2.修改阿帕奇的配置文件开启3.防火墙要开启443端口4.要把三个证书上传到阿帕奇配置文件下.5.更新 httpd.conf 配置文件 ...
- tomcat 编码给为utf-8
在tomcat下找到server.xml 打开server.xml,在下图加上URIEncoding="UTF-8".
- 解决postman环境切换,自动获取api签名时间及签名
postman调试api接口时,常遇到两个问题: 1.环境分为开发环境,测试环境,正式环境,如何只写一个接口,通过切换postman环境来实现不同环境的接口调用? 2. api接口请求时往往会添加,来 ...
- Python练习:爬虫练习,从一个提供免费代理的网站中爬取IP地址信息
西刺代理,http://www.xicidaili.com/,提供免费代理的IP,是爬虫程序的目标网站. 开始写程序 import urllib.requestimport re def open_u ...
- Raize 重新编译
最近项目用到了Raize5的日历控件, 需要在中文版本与英文版本中切换显示, 这个需要修改 RzPopups.pas, 修改了需要重新编译. 费老大劲了. 首选修改 RzBorder.pas, 不 ...
- sitecore8.2 如何关闭性能计数器
在Sitecore.config文件或补丁文件修改Counters.Enabled为false值,此key默认为true;然后再修改Sitecore.Tasks.CounterDumpAgent 时间 ...