包是模組的一種形式,包的本質就是乙個含有__init__.py
的檔案的資料夾
當乙個模組功能太多的時候不方便進行管理,我們用包來進行管理
1.匯入包發生的三件事
建立乙個包的命名空間
由於包是乙個資料夾,無法執行包,因此執行包下的__init__.py檔案,將執行過程中產生的名字存放於包命名空間中(即包命名空間中存放的名字都是來自於__init__.py)且init中檔案執行匯入檔案的路徑以執行檔案為基準
在執行檔案中使用包內的名稱,是指向包的命名空間
2.包的兩種匯入方式
import ...
from ... import...
兩種匯入方式與模組的相似,只是匯入包的時候執行的是包裡面的init
檔案
3.個人理解包匯入的兩種方式路徑的寫法
關於.的使用,在(from.)是當前目錄.(from..)當前檔案目錄的上一級,.要和from連用才有當前目錄,上一級目錄說法,(import.)不是當前,import相當於python的環境配置路徑
為了提高程式的可讀性與可維護性,我們應該為軟體設計良好的目錄結構,這與規範的編碼風格同等重要,簡而言之就是把軟體**分檔案目錄。假設你要寫乙個atm軟體,你可以按照下面的目錄結構管理你的軟體**:
atm/
|-- core/
| |-- src.py # 業務核心邏輯**
||-- api/
| |-- api.py # 介面檔案
||-- db/
| |-- db_handle.py # 運算元據檔案
| |-- db.txt # 儲存資料檔案
||-- lib/
| |-- common.py # 共享功能
||-- conf/
| |-- settings.py # 配置相關
||-- bin/
| |-- run.py # 程式的啟動檔案,一般放在專案的根目錄下,因為在執行時會預設將執行檔案所在的資料夾作為sys.path的第乙個路徑,這樣就省去了處理環境變數的步驟
||-- log/
| |-- log.log # 日誌檔案
||-- requirements.txt # 存放軟體依賴的外部python包列表,詳見
|-- readme # 專案說明檔案
# run.py
import sys
import os
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
from core import src
if __name__ == '__main__': #是匯入run的時候不會呼叫函式
src.run()
# settings.py
import os
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
db_path = os.path.join(base_dir, 'db', 'db.txt')
log_path = os.path.join(base_dir, 'log', 'user.log')
# print(db_path)
# print(log_path)
# src.py
from conf import settings
from lib import common
def login():
print('登陸')
def register():
print('註冊')
name = input('username>>: ')
pwd = input('password>>: ')
with open(settings.db_path, mode='a', encoding='utf-8') as f:
f.write('%s:%s\n' % (name, pwd))
# 記錄日誌。。。。。。
common.logger('%s註冊成功' % name)
print('註冊成功')
def shopping():
print('購物')
def pay():
print('支付')
def transfer():
print('轉賬')
func_dic =
def run():
while true:
print("""
1 登陸
2 註冊
3 購物
4 支付
5 轉賬
6 退出
""")
choice = input('>>>: ').strip()
if choice == '6': break
if choice not in func_dic:
print('輸入錯誤命令,傻叉')
continue
func_dic[choice]()
# common.py
import time
from conf import settings
def logger(msg):
current_time = time.strftime('%y-%m-%d %x')
with open(settings.log_path, mode='a', encoding='utf-8') as f:
f.write('%s %s' % (current_time, msg))
python包,軟體開發目錄規範
包是模組的一種形式,包的本質就是乙個含有 init py的檔案的資料夾 當乙個模組功能太多的時候不方便進行管理,我們用包來進行管理 1.匯入包發生的三件事 建立乙個包的命名空間 由於包是乙個資料夾,無法執行包,因此執行包下的 init py檔案,將執行過程中產生的名字存放於包命名空間中 即包命名空間...
python軟體開發目錄 軟體開發目錄規範
為了提高程式的可讀性與可維護性,我們應該為軟體設計良好的目錄結構,這與規範的編碼風格同等重要。軟體的目錄規範並無硬性標準,只要清晰可讀即可,假設你的軟體名為foo,筆者推薦目錄結構如下 foo core 存放業務邏輯相關 core.py api 存放介面檔案,介面主要用於為業務邏輯提供資料操作。ap...
軟體開發目錄規範
為了提高程式的可讀性與可維護性,我們應該為軟體設計良好的目錄結構,這與規範的編碼風格同等重要,簡而言之就是把軟體 分檔案目錄。假設你要寫乙個atm軟體,你可以按照下面的目錄結構管理你的軟體 atm core src.py 業務核心邏輯 api api.py 介面檔案 db db handle.py ...