python—包
1.模塊
-
可以增加代碼的重復(fù)利用的方式
-
避免命名沖突
-
如何定義模塊
- 模塊就是一個(gè)普通文件,所以任何代碼可以直接書寫
- 規(guī)范
- 函數(shù)(單一的功能)
- 類(相似功能的組合,或者類似業(yè)務(wù)模塊)
- 測(cè)試代碼
-
如何使用模塊
-
模塊直接導(dǎo)入
- 假如模塊名稱直接以數(shù)字開頭,需要借助importlib幫助
-
語法
import module_name module_name.function_name module_name.class_name 復(fù)制代碼 -
import 模塊 as 別名
- 導(dǎo)入的同時(shí)給模塊起一個(gè)別名,其余用法和第一種一樣
-
from module_name import func_name, class_name
- 有選擇性導(dǎo)入,模塊的一部分
-
import module_name import *
- 導(dǎo)入模塊所有內(nèi)容
- 不需要模塊前綴
-
-
if name = 'main'的使用
- 可以有效避免模塊代碼被導(dǎo)入的時(shí)候被動(dòng)執(zhí)行的問題
- 建議所有程序的入口都以此代碼為入口
2.模塊的搜索搜索路徑和存儲(chǔ)
-
什么是模塊的搜索路徑
- 加載模塊的時(shí)候系統(tǒng)會(huì)在哪些地方尋找此模塊
-
系統(tǒng)默認(rèn)的模塊搜索路徑
import syssys.path 屬性可以獲取路徑列表 復(fù)制代碼 -
添加搜索路徑
sys.path.append(dir) 復(fù)制代碼
包
-
是一種組織管理代碼的方式,包里存的是模塊
-
自定義包的結(jié)構(gòu)
/---包/---/--- __init__.py 包的標(biāo)志性文件/---/--- 模塊1/---/--- 模塊2/---/--- 子包(子文件夾)/---/---/--- __init__.py 包的標(biāo)志性文件/---/---/--- 子模塊1/---/---/--- 子模塊2 復(fù)制代碼 -
包的導(dǎo)入操作
- importpackage_name
-
直接導(dǎo)入一個(gè)包,可以使用__init__.py 中的內(nèi)容
-
使用方法
package_name.func_name package_name.class_name.func_name() 復(fù)制代碼 -
此種方式的訪問內(nèi)容是
-
- importpackage_name
-
from ... import 導(dǎo)入
- from package import module1,module2,module3...
- 此種方法不執(zhí)行__init__.py 的內(nèi)容
- form package import *
- 導(dǎo)入當(dāng)前包__init__.py 文件中的所有函數(shù)和內(nèi)容,沒有前綴
-
from package.module import *
- 導(dǎo)入保重指定模塊的所有內(nèi)容
-
在開發(fā)環(huán)境中經(jīng)常會(huì)使用其他模塊,可以直接導(dǎo)入其他模塊中的內(nèi)容
- import 完整包或者模塊的路徑
-
__all__的用法
- 在使用from package import * 的時(shí)候,*可以導(dǎo)入的內(nèi)容
- 如果__init__.py中的文件為空,或者沒有__all__ ,那么只能把__init__ 中的內(nèi)容導(dǎo)入
- 如果__init__中如果設(shè)置了__all__ 的值,那么則按照__all__ 指定的子包或者模塊進(jìn)行導(dǎo)入,如此則不會(huì)載入__init__ 中的內(nèi)容
- 用法__all__ = ['module1','module2','package1',...]
命名空間
- 用于區(qū)分不同位置不同功能但相同名稱的函數(shù)變量的一個(gè)特定前綴
- 作用是防止命名沖突
轉(zhuǎn)載于:https://juejin.im/post/5c93b99e5188252d6d2faddc
總結(jié)
- 上一篇: elasticsearch全局analy
- 下一篇: python 视频字幕替换_利用pyth