Python学习笔记(十三)

Python学习笔记(十三):

  1. 模块
  2. if name == main
  3. 软件目录结构规范
  4. 做业-ATM+购物商城程序

1. 模块

1. 模块导入方法

  1. import 语句
import module1[, module2[,... moduleN]
# 当咱们使用import语句的时候,Python解释器经过本身的搜索路径(存在sys.path里)进行搜索  
  1. from…import 语句
from modname import name1[, name2[, ... nameN]]
# 这个声明不会把整个modulename模块导入到当前的命名空间中,只会将它里面的name1或name2单个引入到执行这个声明的模块的全局符号表。
  1. From…import* 语句
from modname import *
# 这提供了一个简单的方法来导入一个模块中的全部项目。然而这种声明不应被过多地使用。大多数状况, Python程序员不使用这种方法,由于引入的其它来源的命名,极可能覆盖了已有的定义。

2. 包

为了不模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)
举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。
如今,假设咱们的abc和xyz这两个模块名字与其余模块冲突了,因而咱们能够经过包来组织模块,避免冲突。方法是选择一个顶层包名:
插图
引入了包之后,只要顶层的包名不与别人冲突,那全部模块都不会与别人冲突。如今,view.py模块的名字就变成了hello_django.app01.views,相似的,manage.py的模块名则是hello_django.manage。
请注意,每个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,不然,Python就把这个目录当成普通目录(文件夹),而不是一个包。init.py能够是空文件,也能够有Python代码,由于__init__.py自己就是一个模块,而它的模块名就是对应包的名字。
**调用包就是执行包下的__init__.py文件python

3. if name == main

  • 若是咱们是直接执行某个.py文件的时候,该文件中那么”name == 'main'“是True,可是咱们若是从另一个.py文件经过import导入该文件的时候,这时__name__的值就是咱们这个py文件的名字而不是__main__。
  • 这个功能还有一个用处:调试代码的时候,在”if name == 'main'“中加入一些咱们的调试代码,咱们可让外部模块调用的时候不执行咱们的调试代码,可是若是咱们想排查问题的时候,直接执行该模块文件,调试代码可以正常运行!

4. 软件目录结构规范

1. 为何要设计好目录结构?

  1. 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪一个,测试目录在哪儿,配置文件在哪儿等等。从而很是快速的了解这个项目。
  2. 可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪一个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增长,项目结构不会混乱,仍然可以组织良好。

2. 目录组织方式

  1. bin/: 存放项目的一些可执行文件,固然你能够起名script/之类的也行。
  2. foo/: 存放项目的全部源代码。
  3. 源代码中的全部模块、包都应该放在此目录。不要置于顶层目录。
  4. 其子目录tests/存放单元测试代码;
  5. 程序的入口最好命名为main.py。
  6. docs/: 存放一些文档。
  7. setup.py: 安装、部署、打包的脚本。
  8. requirements.txt: 存放软件依赖的外部Python包列表。
  9. README: 项目说明文件。

5. 做业-ATM+购物商城程序

  • 做业需求:模拟实现一个ATM + 购物商城程序
  1. 额度 15000或自定义
  2. 实现购物商城,买东西加入 购物车,调用信用卡接口结帐
  3. 能够提现,手续费5%
  4. 每个月22号出帐单,每个月10号为还款日,过时未还,按欠款总额 万分之5 每日计息
  5. 支持多帐户登陆
  6. 支持帐户间转帐
  7. 记录每个月平常消费流水
  8. 提供还款接口
  9. ATM记录操做日志
  10. 提供管理接口,包括添加帐户、用户额度,冻结帐户等。。。
  11. 用户认证用装饰器
相关文章
相关标签/搜索