模塊:
模塊就是一個python文件。
模塊就是一個python文件。
功能:
1.可以提高文件的重復(fù)利用率。提高開發(fā)效率
2.用于劃分程序結(jié)構(gòu)。
自定義模塊:
模塊就是一個python文件而已,所有python代碼都可以放入模塊,實(shí)際開發(fā)中,模塊放入的內(nèi)容都是
重復(fù)利用率高的內(nèi)容主要包含:
1.為當(dāng)前模塊專門定義的變量【其他語言一般都是常量】
2.函數(shù)。
3.類
4.測試代碼
注意:模塊的命名不要和內(nèi)置模塊重名!
測試代碼統(tǒng)一放到判斷當(dāng)中
if __name__ == '__main__':
只在當(dāng)前文件測試代碼,當(dāng)前文件的屬性,功能不能被其他文件調(diào)用
模塊的導(dǎo)入:
1.import 模塊名
直接導(dǎo)入整個模塊
2.import 模塊名 as 別名
使用別名導(dǎo)入模塊,適用于模塊名稱較長的模塊
3.from 模塊名 import 某個內(nèi)容
導(dǎo)入模塊中的指定內(nèi)容。
注意:該方式是將模塊中的內(nèi)容直接導(dǎo)入當(dāng)前腳本當(dāng)中,訪問不需要模塊名稱
4.from 模塊名 import 內(nèi)容1,內(nèi)容2,內(nèi)容3....
導(dǎo)入模塊中的指定的多個內(nèi)容。
注意:該方式是將模塊中的內(nèi)容直接導(dǎo)入當(dāng)前腳本當(dāng)中,訪問不需要模塊名稱
?
5.from 模塊名 import *
導(dǎo)入模塊中的所有內(nèi)容
注意:該方式是將模塊中的內(nèi)容直接導(dǎo)入當(dāng)前腳本當(dāng)中,訪問不需要模塊名稱
受保護(hù)的內(nèi)容不能使用這種方式進(jìn)行訪問
警告:
使用from ... import 語法必須確定 模塊中的內(nèi)容不會和當(dāng)前腳本中的內(nèi)容重名。
模塊的搜索路徑:
import module1
name = “王大錘”
print(module1.name)
導(dǎo)入模塊的時候程序查找指定模塊的文件夾的路徑的集合。
import sys
print(sys.path)
常用搜索路徑(windows)
1.當(dāng)前導(dǎo)入模塊的文件所在的文件夾
僅僅是一個普通的程序文件,為當(dāng)前文件夾下的文件使用的模塊
2.(python安裝目錄中的Lib文件夾)C:\Users\xdl\AppData\Local\Programs\Python\Python37\Lib
表示為python擴(kuò)展功能,適用于所有使用當(dāng)前環(huán)境的程序
3.(真實(shí)和虛擬環(huán)境要區(qū)分好)第三方模塊的目錄\Lib\sitepackages(C:\Users\xdl\AppData\Local\Programs\Python\Python37\Lib\site-packages)
也是為python擴(kuò)展功能,相當(dāng)于用戶為自己環(huán)境擴(kuò)展的而不是為整個python擴(kuò)展的
自己添加搜索路徑:
import sys
sys.path.append(‘路徑’)
包:
文件夾。所以包就是一個普通的文件夾在python中的稱呼。
作用:
1.主要用于組織模塊。
2.可以當(dāng)作模塊使用。
包的結(jié)構(gòu):
包(文件夾)
|----
init
.py 包的標(biāo)志文件(可以有內(nèi)容,也可以是空的!)
|---- 模塊1(文件)
|---- 模塊2(文件)
|---- …
|---- 子包(文件夾中的文件夾)
|----- |----
init
.py 包的標(biāo)志文件(可以有內(nèi)容,也可以是空的!)
|----- |---- 模塊3
|----- |---- 模塊4
|----- |---- …
包的導(dǎo)入方式:
import語法導(dǎo)入
1.import 包名
導(dǎo)入包本身,但是不一定能夠?qū)雰?nèi)容.
-
import 包名.模塊名
導(dǎo)入包中的指定模塊。 -
import 包名.子包名
導(dǎo)入子包本身,但是不一定能夠?qū)雰?nèi)容.
4.import 包名.子包名.模塊
導(dǎo)入包中子包中的模塊
以上四個語法均可以使用as語法設(shè)置別名
from import 語法導(dǎo)入
1.from 包 import 模塊
從包中導(dǎo)入一個模塊
2.from 包 import 模塊1,模塊2…
從包中導(dǎo)入者多個模塊
3.from 包 import 子包
從包中導(dǎo)入子包,無法使用模塊中的信息
4.from 包.子包 import 模塊
導(dǎo)入包中子包中的模塊
5.from 包名.子包.模塊 import 內(nèi)容
導(dǎo)入包中子包中模塊的一個或者多個內(nèi)容
all
特殊變量:(少用)
1.包是文件夾一般不能夠存儲信息。
2.
init
.py文件除了當(dāng)做包的標(biāo)志之外,還可以為包本身存儲信息,使得包具有模塊的內(nèi)容
3.在__init__.py文件中,如果設(shè)置了__all__變量,并且使用from 包 import * 語法導(dǎo)入包本身
init
.py中除了__all__的設(shè)置之外,其余設(shè)置均會失效
4.__all__變量的作用在使用from 包 import *的導(dǎo)入方式之下,可以設(shè)定當(dāng)前包導(dǎo)入時所使用的模塊
all
= [‘模塊名’,‘模塊名’,‘模塊名’,…]
相對導(dǎo)入與絕對導(dǎo)入方式:
絕對導(dǎo)入:
import 包
import 模塊
import 包.子模塊
from 包 import 模塊
from 模塊 import 內(nèi)容
查找方式:絕對導(dǎo)入方式會使用【搜索路徑】查找指定的包或者模塊的所在
相對導(dǎo)入:
import 語法無法使用 !
from .包名/模塊名 import 內(nèi)容
from …包名/模塊名 import 內(nèi)容
查找方式:在當(dāng)前文件夾中搜索查找指定的包或者模塊
# 相對路徑導(dǎo)入時,不可以直接運(yùn)行當(dāng)前文件,因?yàn)閜ython會把當(dāng)前文件作為最頂層文件直接運(yùn)行,如果要使用的話,就要在別的文件里使用絕對路徑方式導(dǎo)入此文件,才可以運(yùn)行。
# 單入口設(shè)計(jì)模式就是由此而來。
# 單入口設(shè)計(jì)模式的優(yōu)點(diǎn):安全,隱私性較高。缺點(diǎn):代碼調(diào)試不好做。
注意:from后面可以使用. import 后面允許使用,
例子:
from . import pkg 相對于當(dāng)前路徑引入模塊
from .模塊名 import 屬性名 相對于當(dāng)前模塊引入具體屬性
from … import 模塊名 相對于上一級引入模塊
from …包名 import 模塊名 相對于上一級的某個包引入模塊
from …包名.模塊名 import 屬性名 相對于上一級某個包下的某個模塊引入某屬性
. 當(dāng)前路徑
… 上一級路徑
… 上一級的上一級
… 上一級的上一級的上一級
… (這里的點(diǎn)是無限的)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
