知識點回顧:
- 導入官方庫的三種手段
- 導入自定義庫/模塊的方式
- 導入庫/模塊的核心邏輯:找到根目錄(python解釋器的目錄和終端的目錄不一致)
作業:自己新建幾個不同路徑文件嘗試下如何導入
一、導入官方庫
我們復盤下學習python的邏輯,所謂學習python就是學習python常見的基礎語法+學習你所處理任務需要用到的第三方庫
所以你用到什么學什么庫即可。學習python本身就是個偽命題,就像你說學習科目一樣,你沒說清晰你學習的具體科目是什么,也沒說學這個科目的哪些章節,畢竟每個科目都很大-----要有以終為始的思想。
所以我們這個訓練營,正確的說法是:學習借助pythob掌握深度學習和機器學習所必備的基礎知識和相關工具。
標準導入:導入整個庫
這是最基本也是最常見的導入方式,直接使用import語句。
# 方式1:導入整個模塊
import mathprint("方式1:使用 import math")
print(f"圓周率π的值:{math.pi}")
print(f"2的平方根:{math.sqrt(2)}\n")
從庫中導入特定項
當使用from語法從庫中導入特定的函數或類時,這些函數或類就可以在您的代碼中直接使用,不需要添加模塊名作為前綴。因為在導入時沒有包括模塊的完整路徑,前面也不能加上庫名。
# 方式2:導入特定的函數或變量
from math import pi, sqrtprint("方式2:使用 from math import pi, sqrt")
print(f"圓周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}\n")
類似的寫法,如sklearn庫很大,直接導入sklearn庫會占用電腦大量內存,所以一般只導入你需要的庫,
如: from sklearn.model_selection import train_test_split
非標準導入:導入整個庫
如下,●這將導入math模塊中定義的所有公開函數和變量。 ●和上述from同理,直接調用sin()、cos()等,而無需math.前綴。
雖然 import math和 from math import *看起來都是導入了?math?模塊,但它們在導入方式、作用域處理以及對命名空間的影響上有重要的區別。
命名空間的污染?import math:
這種方法會將整個?math?模塊導入到命名空間中,但是需要使用?math.?前綴來訪問模塊內的函數或變量。這種方式保持了命名空間的整潔,因為所有的?math?函數和變量都包含在?math?這個模塊對象中。?from math import *:這種方法將?math?模塊中的所有公開的函數和變量導入到當前的命名空間中,可以直接使用這些函數和變量而無需?math.?前綴。這種方式可能會導致命名空間污染,特別是當有多個模塊都被這樣導入時,很容易發生命名沖突。
明確性和可維護性?import math:
明確指出了函數和變量來源于?math?模塊,這對代碼的可讀性和維護性都是有益的。其他閱讀你代碼的人可以清楚地看到每個函數的來源,這對大型項目和團隊合作尤為重要。?
from math import *:雖然代碼看起來更簡潔,但這種方法減少了代碼的明確性。如果沒有足夠的上下文,很難判斷一個特定的函數是來自?math?模塊還是其他模塊,尤其是當你導入了多個模塊時。
from math import *print(f"圓周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}")
模塊、包的定義
模塊(Module)
本質:以?.py?結尾的單個文件,包含Python代碼(函數、類、變量等)。
作用:將代碼拆分到不同文件中,避免代碼冗余,方便復用和維護。
包(Package)
在python里,包就是庫
本質:有層次的文件目錄結構(即文件夾),用于組織多個模塊和子包。
核心特征:包的根目錄下必須包含一個?__init__.py?文件(可以為空),用于標識該目錄是一個包。
使用案例
若編寫一個計算圓面積的代碼并保存為?circle.py,這個文件就是一個模塊。
使用時通過?import circle?導入模塊,調用其中的函數(如?circle.calculate_area(5))。
# circle.py
import mathdef calculate_area(radius):return math.pi * radius ** 2
IDE(如 VSCode 或 PyCharm)通常會將你打開的項目文件夾設為“根目錄”(或者說,運行時的工作目錄)。Python 在導入模塊時,會從這個根目錄(以及其他一些標準位置和腳本所在的目錄)開始查找。