1.模塊
-
可以增加代碼的重復利用的方式
-
避免命名沖突
-
如何定義模塊
- 模塊就是一個普通文件,所以任何代碼可以直接書寫
- 規范
- 函數(單一的功能)
- 類(相似功能的組合,或者類似業務模塊)
- 測試代碼
-
如何使用模塊
-
模塊直接導入
- 假如模塊名稱直接以數字開頭,需要借助importlib幫助
-
語法
import module_name module_name.function_name module_name.class_name 復制代碼
-
import 模塊 as 別名
- 導入的同時給模塊起一個別名,其余用法和第一種一樣
-
from module_name import func_name, class_name
- 有選擇性導入,模塊的一部分
-
import module_name import *
- 導入模塊所有內容
- 不需要模塊前綴
-
-
if name = 'main'的使用
- 可以有效避免模塊代碼被導入的時候被動執行的問題
- 建議所有程序的入口都以此代碼為入口
2.模塊的搜索搜索路徑和存儲
-
什么是模塊的搜索路徑
- 加載模塊的時候系統會在哪些地方尋找此模塊
-
系統默認的模塊搜索路徑
import syssys.path 屬性可以獲取路徑列表 復制代碼
-
添加搜索路徑
sys.path.append(dir) 復制代碼
包
-
是一種組織管理代碼的方式,包里存的是模塊
-
自定義包的結構
/---包/---/--- __init__.py 包的標志性文件/---/--- 模塊1/---/--- 模塊2/---/--- 子包(子文件夾)/---/---/--- __init__.py 包的標志性文件/---/---/--- 子模塊1/---/---/--- 子模塊2 復制代碼
-
包的導入操作
- importpackage_name
-
直接導入一個包,可以使用__init__.py 中的內容
-
使用方法
package_name.func_name package_name.class_name.func_name() 復制代碼
-
此種方式的訪問內容是
-
- importpackage_name
-
from ... import 導入
- from package import module1,module2,module3...
- 此種方法不執行__init__.py 的內容
- form package import *
- 導入當前包__init__.py 文件中的所有函數和內容,沒有前綴
-
from package.module import *
- 導入保重指定模塊的所有內容
-
在開發環境中經常會使用其他模塊,可以直接導入其他模塊中的內容
- import 完整包或者模塊的路徑
-
__all__的用法
- 在使用from package import * 的時候,*可以導入的內容
- 如果__init__.py中的文件為空,或者沒有__all__ ,那么只能把__init__ 中的內容導入
- 如果__init__中如果設置了__all__ 的值,那么則按照__all__ 指定的子包或者模塊進行導入,如此則不會載入__init__ 中的內容
- 用法__all__ = ['module1','module2','package1',...]
命名空間
- 用于區分不同位置不同功能但相同名稱的函數變量的一個特定前綴
- 作用是防止命名沖突