網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、前言
在Python提供了強(qiáng)大的模塊支持,主要體現(xiàn)為不僅在Python標(biāo)準(zhǔn)庫(kù)中包含了大量的模塊(稱為標(biāo)準(zhǔn)模塊),而且還有很多第三方模塊,另外開發(fā)者自己也可以開發(fā)自定義模塊。通過這些強(qiáng)大的模塊支持,將極大地提高我們的開發(fā)效率。
二、模塊的概述
模塊的英文是Module,可以認(rèn)為是一盒(箱)主題積木,通過它可以拼出某一主題的東西。這與函數(shù)不同,一個(gè)函數(shù)相當(dāng)于一塊積木,而一個(gè)模塊包括很多函數(shù),也就是很多積木,所以也可以說模塊相當(dāng)于一盒積木。
在Python中,一個(gè)擴(kuò)展名為“.py”的文件就稱之為一個(gè)模塊。通常情況下,我們把能夠?qū)崿F(xiàn)某一特定功能的代碼放置在一個(gè)文件中作為一個(gè)模塊,從而方便其他程序和腳本導(dǎo)入并使用。另外,使用模塊也可以避免函數(shù)名和變量名沖突。
我們知道對(duì)于Python代碼可以寫在一個(gè)文件中,但是隨著程序不斷變大,為了維護(hù),需要將其分為多個(gè)文件,這樣可以提高代碼的可維護(hù)性,使用模塊還可以提高代碼的可重用性。即編寫好一個(gè)模塊后,只要是實(shí)現(xiàn)該功能的程序,都可以導(dǎo)入這個(gè)模塊來實(shí)現(xiàn)。
三、自定義模塊
在Python中,自定義模塊有兩個(gè)作用,一個(gè)是規(guī)范代碼,讓代碼更容易閱讀,另外一個(gè)是方便其他程序使用已編好的代碼,提高開發(fā)效率。要實(shí)現(xiàn)自定義模塊主要分為兩部分,一部分是創(chuàng)建模塊,另一部分是導(dǎo)入模塊。
1.創(chuàng)建模塊
創(chuàng)建模塊可以將模塊中相關(guān)的代碼(變量定義和函數(shù)定義等)編寫在一個(gè)單獨(dú)的文件中,并且將該文件命名為“模塊名+.py”的形式,也就是說,創(chuàng)建模塊,實(shí)際就是創(chuàng)建一個(gè).py文件。
注意:
- 創(chuàng)建模塊時(shí),設(shè)置的模塊名盡量不要與Python自帶的標(biāo)準(zhǔn)模塊名稱相同
- 模塊文件的擴(kuò)展名必須是“.py”
2.使用import語(yǔ)句導(dǎo)入模塊
創(chuàng)建模塊后,就可以在其他程序中使用該模塊了。要使用該模塊需要先以模塊的形式加載模塊中的代碼,這可以使用import語(yǔ)句實(shí)現(xiàn)。import語(yǔ)句的基本語(yǔ)法格式如下:
import modulename [as alias]
參數(shù)說明:
- modulename:要導(dǎo)入模塊的名稱
- [as alias]:為模塊起的別名
例如,導(dǎo)入一個(gè)名稱為test的模塊,并執(zhí)行該模塊中的getInfo()函數(shù),代碼如下:
import test # 導(dǎo)入test模塊
test.getInfo() # 執(zhí)行模塊中的getInfo()函數(shù)
可以使用關(guān)鍵字 as 將導(dǎo)入模塊起個(gè)別名,代碼如下:
import test as m # 導(dǎo)入test模塊,并將test別名為m
m.getInfo() # 執(zhí)行模塊中的getInfo()函數(shù)
使用import一次可以導(dǎo)入多個(gè)模塊,在導(dǎo)入多個(gè)模塊時(shí),模塊與模塊之間用逗號(hào)“,”隔開。例如,同時(shí)導(dǎo)入test.py、data.py、tips.py 3個(gè)模塊文件,代碼如下:
import test,data,tips
雖然一次可以導(dǎo)入多個(gè)模塊,但不建議大家使用這種方法。
3.使用from…import語(yǔ)句導(dǎo)入模塊
在使用import語(yǔ)句導(dǎo)入模塊時(shí),每一次執(zhí)行import語(yǔ)句都會(huì)創(chuàng)建一個(gè)新的命名空間(namespace),并且在命名空間中執(zhí)行與.py文件相關(guān)的所有語(yǔ)句。在執(zhí)行時(shí),需要在具體的變量、函數(shù)和類名前加上“模塊名.”前綴。如果不想在每次導(dǎo)入模塊時(shí)都創(chuàng)建一個(gè)新的命名空間,而是將具體的定義導(dǎo)入當(dāng)前的命名空間中,這時(shí)可以使用from…import語(yǔ)句。使用from…import語(yǔ)句導(dǎo)入模塊后,不需要再添加前綴,直接通過具體的變量、函數(shù)和類名等訪問即可。
from…import語(yǔ)句的語(yǔ)法格式如下:
from modelname import member
參數(shù)說明:
- modelname:模塊名稱,區(qū)分字母大小寫,需要和定義模塊時(shí)設(shè)置的模塊名稱的大小寫保持一致。
- member:用于指定要導(dǎo)入的變量、函數(shù)或者類等。可以同時(shí)導(dǎo)入多個(gè)定義,各個(gè)定義之間用逗號(hào)“,”隔開。如果想導(dǎo)入全部定義,也可以使用通配符星號(hào)“*”代替。
例如,通過下面3條語(yǔ)句都可以從模塊導(dǎo)入指定的定義:
from test import getInfo # 導(dǎo)入test模塊的getInfo()函數(shù)
from test import getInfo,showInfo # 導(dǎo)入test模塊的getInfo()和showInfo()函數(shù)
from test import * # 導(dǎo)入test模塊的全部定義(包括變量和函數(shù))
注意:
在使用from…import語(yǔ)句導(dǎo)入模塊中定義時(shí),需要保證所有導(dǎo)入的內(nèi)容在當(dāng)前的命名空間中是唯一的,否則將出現(xiàn)沖突,后導(dǎo)入的同名變量、函數(shù)或者類會(huì)覆蓋先導(dǎo)入的。這時(shí)就需要使用import語(yǔ)句進(jìn)行導(dǎo)入了。
附:python打包用戶自定義模塊
假設(shè)需要打包的模塊文件名為my.py,打包模塊需要新建的一個(gè)腳本setip.py,然后在腳本下輸入如下的內(nèi)容:
from?disutils.core?import?setup
setup{name?=?'my',version?=?'1.0',py_modules?=?['my']}
以管理員身份運(yùn)行cmd,進(jìn)入my.py的目錄,執(zhí)行下面的命令即可打包:
python?setup.py?sdist
運(yùn)行后在該目錄下方出現(xiàn)一個(gè)文件夾dist,進(jìn)入這個(gè)文件夾,會(huì)出現(xiàn)一個(gè)my-1.0.zip文件。
將該壓縮包放在sys.path的目錄下,解壓,以管理員身份運(yùn)行cmd,進(jìn)入解壓的目錄,執(zhí)行下方的命令即可自動(dòng)安裝my模塊。
python?setup.py?install
完成安裝后,即可加載my模塊:
import?my
總結(jié)
原文鏈接:https://blog.csdn.net/weixin_45191386/article/details/124576153
相關(guān)推薦
- 2022-05-18 ASP.NET?MVC過濾器執(zhí)行順序介紹_實(shí)用技巧
- 2022-03-15 redis編譯報(bào)致命錯(cuò)誤:jemalloc/jemalloc.h:沒有那個(gè)文件或目錄
- 2022-09-22 uni ui 、color ui 圖標(biāo)icon的使用
- 2021-11-05 一文搞懂Golang?時(shí)間和日期相關(guān)函數(shù)_Golang
- 2022-10-16 Python?numpy中np.random.seed()的詳細(xì)用法實(shí)例_python
- 2022-05-17 bat批處理之字符串操作的實(shí)現(xiàn)_DOS/BAT
- 2024-02-26 JqGrid獲得所有選中行數(shù)據(jù)ID數(shù)組,獲取所有行的ID數(shù)組
- 2022-03-26 C++鏈表節(jié)點(diǎn)的添加和刪除介紹_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支