本文主要介紹軟件開發規範,而且經過一個實際的blog的拆分實例來進行講解。python
''' 總體說明: 01 項目的目錄結果以下: (1)bin:用於存放啓動文件,startup.py (2)conf:用於存放配置文件,settings.py (3)core:用於存放核心邏輯代碼,src.py (4)db:用於存放數據文件 ,register.py (5)lib:用於存放公共組件,common.py (6)log:用於存放日誌文件,access.log (7)README:用於說明如下幾個事項。 (a)軟件定位,軟件的基本功能。 (b)運行代碼的方法:安裝環境,啓動命令等。 (c)簡要的使用說明。 (d)代碼目錄結構說明,更詳細點能夠說明軟件的基本原理。 (e)常見的問題說明。 (f)參考示例:https://github.com/antirez/redis#what-is-redis 02 __file__:查看文件的當前目錄 03 dirname(__file__):可獲取項目的根目錄 ''' '''' 需求:將如下程序按照軟件開發規範來進行整理 ''' def logger(f): def inner(*args, **kwargs): with open(LOG_PATH, encoding='utf-8', mode='a+') as f1: f1.write('您訪問了%s' % (f.__name__)) ret = f(*args, **kwargs) return ret return inner def register(): with open(DB_PATH, encoding='utf-8', mode='a+') as f1: f1.write('太白金星|123\n') def login(): pass @logger def comment(): print('歡迎訪問評論頁面') @logger def article(): print('歡迎訪問文章頁面') @logger def diary(): print('歡迎訪問日記頁面') dic = { 1: register, 2: login, 3: comment, 4: article, 5: diary } def run(): while 1: choice = input('請輸入') if choice.isdigit(): choice = int(choice) dic[choice]() else: print('請從新輸入') run() '''整理過程以下:''' '''bin -> startup.py''' # import src 直接引用不行,src這個模塊沒在這三個當中 # 先從內存 ---> 內置模塊(os,time sys..) ---> sys.path import sys import os # sys.path.append(r'D:\24期週末班\day07\blog') # print(__file__) # 文件的當前目錄 # print(os.path.dirname(os.path.dirname(__file__))) # 獲取到了項目根目錄 # 經過將項目根目錄添加至sys。path後,項目內的全部模塊就能夠實現相互調用了 BASE_PATH = os.path.dirname(os.path.dirname(__file__)) sys.path.append(BASE_PATH) from core import src # 用戶代碼調數,若是__name__等於__main__能夠執行,若是__name__等於模塊名,說明模塊被調用,因此不能啓動程序。 if __name__ == '__main__': src.run() '''conf -> settings.py''' DB_PATH = r'D:\pythonweekend24\day07\blog\db\register' LOG_PATH = r'D:\pythonweekend24\day07\blog\log\access.log' '''core -> src.py''' # -*- encoding:utf-8 -*- # from lib import common from conf import settings def register(): with open(settings.DB_PATH, encoding='utf-8', mode='a+') as f1: f1.write('太白金星|123\n') def login(): pass @common.logger def comment(): print('歡迎訪問評論頁面') @common.logger def article(): print('歡迎訪問文章頁面') @common.logger def diary(): print('歡迎訪問日記頁面') dic = { 1: register, 2: login, 3: comment, 4: article, 5: diary } def run(): while 1: choice = input('請輸入') if choice.isdigit(): choice = int(choice) dic[choice]() else: print('請從新輸入') '''lib -> common.py''' from conf import settings def logger(f): def inner(*args, **kwargs): with open(settings.LOG_PATH, encoding='utf-8', mode='a+') as f1: f1.write('您訪問了%s' %(f.__name__)) ret = f(*args, **kwargs) return ret return inner '''db -> register''' '''log ->access.log'''