1. 程式人生 > >6 模塊與包管理

6 模塊與包管理

name 緩存 應用 組件 site mat url datetime 查找

1 python程序結構

 1 #python程序結構從小到大依次為:
 2 #表達式、語句、函數、類、腳本文件(模塊)、包
 3 
 4 #模塊(Module):為了有利於命名空間的分割,一個項目中同名對象可以放在不同的模塊中。
 5 #如數據庫訪問模塊、訂單訪問模塊、共享服務或數據(把一部分數據放在單獨的模塊中,給其他模塊共用)
 6 
 7 #開發中代碼的組織,一個頂層文件:包括主要控制流用於啟動程序
 8 #若幹個支持文件(模塊),提供功能組件以備頂層文件使用
 9 
10 #如何利用其他模塊?
11 #用import指令。導入機制import指令運行是執行並載入文件
12 #第一步:標識被載入的文件
13 #第二步:分配模塊變量名稱 14 15 #如在a.py文件中的內容如下 16 greeting = hello 17 def print_hello(): 18 print(greeting) 19 20 print_hello() 21 22 #文件b.py中的內容如下 23 import datetime.datetime 24 now = datetime.datetime.now() 25 def print_b_time(n): 26 print(當前時間:{}.format(n)) 27 28 #如果模塊a中想使用模塊b中定義的內容 29 #把文件b中的所有內容都導入到文件a中的寫法import b.py
30 #print(b.now) 31 32 #模塊導入的過程 33 #環節一:查找模塊文件,按照特定的搜索順序; 34 #環節二:把找到的模塊文件編譯成字節碼文件,緩存以提高調用速度,若被導入的模塊內容變動或python版本變動,會重新編譯,編譯好的內容隔離存儲於__pycache__目錄(緩存); 35 #環節三:運行代碼構造器定義的對象。 36 37 38 #模塊搜索路徑: 39 #1 程序主目錄:主目錄下的子目錄,這裏就涉及另外一個概念,包 40 #2 系統環境變量 PYTHONPATH 設定的目錄 41 #3 前兩步都找不到,就去標準庫中找,即Python安裝的目錄的Lib目錄下
42 #4 在Python運行環境創建一個配置文件 .pth文件內容指定目錄(僅做了解),文件裏配置,在哪個目錄下,有什麽模塊 43 #5 第三方擴展 site-packages目錄下安裝的第三方擴展,,在Python安裝目錄或虛擬環境目錄 44 45 #模塊的命名必須是合法的標識符 46 47 #模塊的使用import 48 #import product 用這種方式可以把整個模塊導入 49 #還可以只導入模塊的特定成員 50 #from product.pay import a,b,c 這樣就可以直接用a,b,c了 51 #但是為了避免同名對象的覆蓋,還是在引用對象的時候帶上模塊名 52 53 54 #由於模塊導入操作只執行一次,被導入的模塊代碼如果後續有修改,修改部分不能映射到執行環境中 55 #可以使用importlib.reload 模塊 重新導入模塊 56 #在不終止當前程序運行的情況下重新導入模塊 from importlib import reload 模塊 57 #reload(product) 要求參數必須是模塊,只能應用於import語句導入的部分 58 #from xx import 不適用於reload() 59 60 61 #package包管理 62 #當程序更加復雜的話,可以引入包,包就相當於是文件夾 63 #包含代碼的目錄 64 #報名自動作為命名空間的一部分 65 66 #從其他包中導入模塊的寫法 67 #import product.category 68 #print(product.category.name) 在當前模塊下用的時候,報名、模塊名要寫全。 69 70 71 #以相對路徑方式導入模塊 72 #從模塊當前路徑下開始找,只能使用from的方式導入 73 #from . import sqlite 74 #from . sqlite import dburl 75 76 # . 代表當前文件路徑 77 # .. 代表上級目錄

6 模塊與包管理