自家的率先个python web开发框架(八)——项目协会与RESTful接口风格表明

Python学习笔记(十三):

  1. 模块
  2. if name == main
  3. 软件目录结构正式
  4. 学业-ATM+购物超市先后

  5. 模块


  PS:再次证美赞臣下,原本不想写的太啰嗦的,可事先十三分连串发表后意识,好多朋友都想霎时获得代码登时能上手开发自身的品种,对代码结构、基础常识、分类目录与公事功用布局、常用函数……等等什么都不懂,然后就想使用,小编确实很无语,还有局地情侣有十几年支出经历也会问壹些很基础的难点,小编都不知晓怎么回应了。一下子得到全数项指标代码,初学者要上手并不是那么不难的业务,很多代码通过层层包装后,反复跳转调用,不弄晕就很不易于了,所以得一步步来,通晓整个代码的发展历程,知道它是怎么变化的,理解常用代码函数的应用方法,那样才能急迅上手,相当熟识。

一. 模块导入方法

  1. import 语句

    import module1[, module2[,... moduleN]
    # 当我们使用import语句的时候,Python解释器通过自己的搜索路径(存在sys.path里)进行搜索  
    
  2. from…import 语句

    from modname import name1[, name2[, ... nameN]]
    # 这个声明不会把整个modulename模块导入到当前的命名空间中,只会将它里面的name1或name2单个引入到执行这个声明的模块的全局符号表。
    
  3. From…import* 语句

    from modname import *
    # 这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。大多数情况, Python程序员不使用这种方法,因为引入的其它来源的命名,很可能覆盖了已有的定义。
    

为了制止模块名争执,Python又引入了按目录来协会模块的主意,称为包(Package)
举个例子,三个abc.py的文本正是四个名字叫abc的模块,一个xyz.py的公文正是三个名字叫xyz的模块。
未来,如若大家的abc和xyz那多少个模块名字与任何模块争论了,于是大家得以经过包来组织模块,防止争执。方法是接纳多少个顶层包名:
图片 1
引进了包之后,只要顶层的包名不与人家争持,那拥有模块都不会与外人争论。今后,view.py模块的名字就变成了hello_django.app0壹.views,类似的,manage.py的模块名则是hello_django.manage。
请小心,每二个包目录下边都会有一个__init__.py的文本,那一个文件是必须存在的,不然,Python就把那么些目录当成普通目录(文件夹),而不是贰个包。init.py能够是空文件,也得以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字。
**调用包正是实施包下的__init__.py文件

 

3. if name == main

  • 假若我们是直接执行某些.py文件的时候,该公文中那么”name ==
    main‘“是True,但是大家只要从别的四个.py文件通过import导入该文件的时候,那时__name__的值就是大家以此py文件的名字而不是__main__。
  • 本条意义还有2个用处:调节和测试代码的时候,在”if name ==
    main‘“中参预一些大家的调节和测试代码,大家得以让外部模块调用的时候不执行大家的调剂代码,可是要是我们想排查难题的时候,直接实施该模块文件,调节和测试代码能够通常运作!

  过了两日,小白与老菜在铺子加完班后,小白看到老菜准备撤离,赶紧逮着机会走了千古。

四. 软件目录结构正式

  小白:老大有空吗?想和您再聊一会,请教多少个难题?

一. 为何要规划好目录结构?

  1. 可读性高:
    不纯熟那些项指标代码的人,1眼就能看懂目录结构,知道程序运营脚本是哪个,测试目录在哪儿,配置文件在哪儿之类。从而足够飞快的打听那么些项目。
  2. 可维护性高:
    定义好组织规则后,维护者就能很明显地精通,新增的哪些文件和代码应该置身什么目录之下。那么些利益是,随着时光的延迟,代码/配置的规模增添,项目布局不会混杂,依然能够协会非凡。

  老菜:哈哈…有怎么样难题说来听听。

二. 目录组织办法

  1. bin/: 存放项目的1对可执行文件,当然你能够起名script/之类的也行。
  2. foo/: 存放项目标全体源代码。
  3. 源代码中的全部模块、包都应该置身此目录。不要置于顶层目录。
  4. 其子目录tests/存放单元测试代码;
  5. 程序的进口最好命名称为main.py。
  6. docs/: 存放一些文书档案。
  7. setup.py: 安装、铺排、打包的本子。
  8. requirements.txt: 存放软件正视的外部Python包列表。
  9. README: 项目表达文件。

  10. 学业-ATM+购物商城先后


  • 学业要求:模拟达成叁个ATM + 购物超级市场先后
  1. 额度 一四千或自定义
  2. 完毕购物超级市场,买东西参预 购物车,调用信用卡接口结账
  3. 能够提现,手续费伍%
  4. 每月22号出账单,每月10号为还款日,过期未还,按欠款总额 拾分之5每一日计算利息
  5. 支持多账户登录
  6. 扶助账户间转账
  7. 记录每月一般消费流水
  8. 提供还款接口
  9. ATM记录操作日志
  10. 提供管理接口,包含丰硕账户、用户额度,冻结账户等。。。
  11. 用户认证用装饰器

  小白:按您上次说的预备干活骨干都准备好了,包涵支付环境、前端页面、数据库设计等,以后快要进入编码阶段了,上次讲的文本分类摆放什么的不太知道,为何要如此做?还有正是自己尚未积攒过各样常用工具函数,能不可能发多少个给自己?

  老菜:工具函数回头发给你,对于文本分类摆放作者再细说一下。

  笔者与众多开发职员合作过,由于诸多程序员对品种文件的分类管理不太正视,所以开发1段时间现在,就会意识整整项目变得很乱很难管理,我们根据自身的喜好随便创制目录,而一壹程序文件也未曾分类放到对应的文件夹里,此外由于大家未有翻动外人代码的习惯且文件管理混乱,同样的效用常常会友善写本身的,造成重复费用。时间久了后来供给对品种实行爱戴时,正是各类找,项目不成难点还相当的小,项目大时程序文件比较多要修改一个bug都很麻烦。所以在支付前,大家须求先约定好项目组织表达,那样大家在付出时都会分门别类的在对应分类文件夹里成立程序文件,且先后文件命名都使用统一的行业内部,可读性强,大家通晓起来也便于。

  比如说小编常用的体系布局:(如下图)

  图片 2

api  接口api文件夹
common  工具函数文件夹
config  配置文件夹
external_interface  外部接口调用文件夹       
log  日志文件夹
logic  逻辑层文件夹
service  python服务
static  静态文件夹
test  测试文件夹
main.py 程序主文件

 

 

 

 

  有了束缚后,相关开发职员清楚各种目录成效,就很简单找到本身想要的代码或函数,同时也明白要添加的文件或函数往哪儿加。

  比如说管理员管理表(manager),大家一般接口文件名会用那个表名来命名:manager.py,针对那么些表举办的询问、添加记录、修改记录、删除记录和其它操作,那些效应函数都会放在manager.py中,方便现身很是时一向查找。

  工具函数文件必须运用效率名称的英文名来定名,一般本身还会加上后缀_helper来开始展览区分,让大家一看到这些文件就了解她是common里的工具函数文件,比如:datetime_helper.py(日期操作包)、db_helper.py(数据库操作包)、log_helper.py(日志操作包)等。逻辑层文件名,作者会添加后缀_logic,python服务文件会添加后缀_service,测试类文件会添加后缀_test来区分文件作用。当然不添加后缀或用任何约定好的前缀或后缀名都足以,只要我们依照统1的牢笼,开发起来就会轻松多了。

 

  此外,由于python的url路由和.net、php的不1致,不是用文件名来做为访问路由的,而是在文书中自定义的,所以在命名上也是要根据一定的约束,这样管理起来才相比不难。今后可比流行RESTful风格的接口(路由),你能够品尝一下用这一个小品种练练手,熟练一下。

  关于RESTful的认证网上有太多小说了,那里就不再细说它的概念。那么使用它有何便宜吗?小编个人认为使用那种url设计风格,最大的益处正是我们不要再为url起名而烦扰了(哈哈…说笑的…),RESTful风格设计的url结构清晰,令人简单精通每一个url的法力,扩充起来也有益。

  那么我们来说说怎么用它来设计url。首先url名称上尽量使用名词,不要用动词,比如对领队表展开操作,url设计不要用add_manager、edit_manager等艺术;对能源的操作,我们选拔HTTP协议里的动词来促成。

  GET:获取能源

  POST:创建财富

  PUT:更新财富

  DELETE:删除能源

  例如:

  获取管理员列表:GET
http://127.0.0.1/manager/?page=0&rows=20&sidx=id&sord=desc

  添加管理员:POST
http://127.0.0.1/manager/

  修改id为1的管理人记录音信:PUT http://127.0.0.1/manager/1/

  获取id为一的总指挥记录消息:GET http://127.0.0.1/manager/1/

  删除id为1的管理员记录:DELETE http://127.0.0.1/manager/1/

  启用或剥夺id为一的领队记录:PUT http://127.0.0.1/manager/1/enable/
(启用)   PUT http://127.0.0.1/manager/1/disable/ (禁用)

  当然,为了让url更清楚,有时还会添加1些分拣项目(也有十分大希望是密密麻麻分类),比如前后端接口区分,会在manager前增添manage或admin,例如:GET
http://127.0.0.1/manage/manager/(获取后台管理系统的管理员列表)

  好了,你协调上网去检查相关材料,假诺不会的话参考小编给您的demo,照着复制粘贴就能够了,唯有入手做多了,坑踩多了就清楚了。快速去品味一下吧,唯有利用过你才能真的领会它的用法与便宜。

 

 

作者:AllEmpty
出处:http://www.cnblogs.com/EmptyFS/
有趣味的爱人能够加加python开发QQ群:66905847伍,咱们壹齐探索。我们非常的话能够在群里发问,当然小编平日工作也要命繁忙不自然会立马过来。

本文为AllEmpty原创,欢迎转发,但未经同意必须保留此段注明,且在文章页面显著地方给出原来的小说连接,不然保留追究法律义务的义务。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图