1. 程式人生 > >python學習之路(十二)

python學習之路(十二)

pack 分享 psi python 模塊 shp 詳解 階段 new from

這節主要介紹一下import!很實用的調用模塊的功能。


導入模塊 是導入真實的代碼

而導入包 是導入包下面的 __init__() 文件 這兩個是不一樣的

先說模塊定義

模塊 它就是一個 py 文件 它就是負責從邏輯上 組織代碼的 代碼裏面 它可以有變量 有函數 有類 有邏輯 模塊 它不是這些東西的簡單堆砌 而是要實現功能 創建模塊 就是 new 一個 python file 定義一個模塊: 技術分享 在另一個文件中 要使用這個模塊 所以要這樣來調用: 技術分享 模塊名 點 變量名 模塊名 點 方法名
import module_alex
print(module_alex.name)
module_alex.say_hello()
像是現在這種寫法 它僅僅導入一個模塊 那要如果要導入很多模塊 怎麽辦? —— 逗號分隔 為防止沖突 還有一種別名導入的方式:
import module_alex
from module_alex import logger as logger_from_alex


def logger():
print(‘i am logger in current file‘)

logger()
logger_from_alex()
下面就講到 import 的本質 字面就是導入一個模塊的意思 模塊說白了就是一個文件 一堆代碼 比方說 import module_alex 它的本質 就是把 module_alex 這個文件解釋了一遍 或者說 把 module_alex 這個文件運行了一遍 然後把它運行的結果 賦值給 module_alex 這個變量 那 module_alex 這一堆代碼當中 它定義了一些變量 要如果想調用這個變量 就 module_alex.name 這樣調用 要如果想調用這個方法 就 module_alex.logger 這樣調用
import module_alex

print(module_alex.name)
還可以 from module_alex import name 這種寫法 這樣子 相當於僅僅解釋了 name 如果是這樣導入 調用的時候就不用寫 module_alex 了 就直接寫 name 就可以導入了
from module_alex import name

print(name)
補充一個點 就是寫目錄結構的時候 右鍵新建 建的是 package 建完之後發現它自動帶上一個文件 技術分享 那其實 package 就是包 而包的意思就是文件夾 或者目錄 它就是以這個 __init__.py 文件為特征的 如果是模塊 它就是文件 在裏面寫代碼就 OK 了 如果是包 它就是文件夾 在裏面寫模塊就 OK 了 包 就是從邏輯上組織模塊的 導入模塊 就是 import 模塊名 或者 from 模塊名 import 變量名方法名 那導入包 也是 import 包名就 OK 了 導入包 它實際上 是在解釋包下面的 __init__() 文件 無論是導入模塊 還是導入包 都是在同級路徑下才可以導入 那如果不在同一個目錄下 怎麽導入呢? 統計目錄下沒有 就不能導入 因為它導入的時候 實際上是去找這個路徑了 按什麽找呢 按 sys.path 去找
import sys
print(sys.path)
一個一個找一遍 都找不到 就拋異常 技術分享 那為了能找到 module_alex 就得先把它的父目錄 加入 sys.path 裏面
print(os.path.abspath(__file__))
結果:

/Users/lucia_gaga/PycharmProjects/practice_lucia/bb/path.py

獲取上級:
print(os.path.dirname(os.path.abspath(__file__)))
結果:

/Users/lucia_gaga/PycharmProjects/practice_lucia/bb

就這樣一層一層往上找

python學習之路(十二)