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. 用戶認證用裝飾器
相關文章
相關標籤/搜索