【Python基礎入門系列】第06天:Python 模塊和包

? ? ? ??在計算機程序的開發過程中,隨著程序代碼越寫越多,在一個文件里代碼就會越來越長,越來越不容易維護

為了編寫可維護的代碼,我們把很多函數分組,分別放到不同的文件里,這樣,每個文件包含的代碼就相對較少,很多編程語言都采用這種組織代碼的方式。在Python中,一個.py文件就稱之為一個模塊(Module)

先給大家解釋一下模塊、包、庫之間的概念:

  • 模塊(module)其實就是?py 文件,里面定義了一些函數、類、變量等

  • 包(package)是多個模塊的聚合體形成的文件夾,里面可以是多個 py 文件,也可以嵌套文件夾

  • 庫是參考其他編程語言的說法,是指完成一定功能的代碼集合,在 Python 中的形式就是模塊和包

下面我們來分開介紹:模塊

?

使用模塊有什么好處?

最大的好處是大大提高了代碼的可維護性。其次,編寫代碼不必從零開始。當一個模塊編寫完畢,就可以被其他地方引用。我們在編寫程序的時候,也經常引用其他模塊,包括Python內置的模塊和來自第三方的模塊。

使用模塊還可以避免函數名和變量名沖突。相同名字的函數和變量完全可以分別存在不同的模塊中,因此,我們自己在編寫模塊時,不必考慮名字會與其他模塊沖突。但是也要注意,盡量不要與內置函數名字沖突

定義和調用 Python 模塊

下面先來看真實的定義一個 Python 模塊。

定義一個 hello.py 模塊,內容如下:


def sayhello( ):print("Hello 學長!")

一般情況下,我們使用?import 語句來引入模塊:

 

import module1[, module2[,... moduleN]]

當解釋器遇到 import 語句,如果模塊在當前的搜索路徑就會被導入。調用的時候使用?模塊名.函數名?來進行調用

以上的示例為例,我們新建 do.py 文件調用 hello.py 模塊中方法。

do.py 文件內容如下:


# 導入模塊
import hello# 現在可以調用模塊里包含的函數了
hello.sayhello()

在 do.py 頁面執行快捷鍵 ctrl+b (sumblime中)

控制臺輸出:Hello 學長!,證明調用 hello.py 中的方法成功。

再來說“包”

?

你也許還想到,如果不同的人編寫的模塊名相同怎么辦?為了避免模塊名沖突,Python又引入了按目錄來組織模塊的方法,稱為包(Package)。

舉個例子,一個abc.py的文件就是一個名字叫abc的模塊,一個xyz.py的文件就是一個名字叫xyz的模塊。

現在,假設我們的abcxyz這兩個模塊名字與其他模塊沖突了,于是我們可以通過包來組織模塊,避免沖突。方法是選擇一個頂層包名,比如mycompany,按照如下目錄存放:

 

mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py


?

包(package)是 Python 中對模塊的更高一級的抽象。

簡單來說,Python 允許用戶把目錄當成模塊看待。這樣一來,目錄中的不同模塊文件,就變成了「包」里面的子模塊。此外,包目錄下還可以有子目錄,這些子目錄也可以是 Python 包。這種分層,對模塊識別、管理,都是非常有好處的。

特別地,對于一些大型 Python 工具包,內里可能有成百上千個不同功能的模塊。科學計算領域,SciPy, NumPy, Matplotlib 等第三方工具,都是用包的形式發布的。

包定義

常見的包層級目錄結構如下:

 

pakageName
-------__init__.py
-------moduleName1.py
-------moduleName2.py
------- ...

包路徑下必須存在?__init__.py?文件。

使用 Python 包

Python 包的使用和模塊的使用類似,下面是導入的語法:

 

import 包名.包名.模塊名

?

?

總結

?

本節給大家介紹了 Python ?模塊和包的使用,模塊是一組Python代碼的集合,可以使用其他模塊,也可以被其他模塊使用。創建自己的模塊時,要注意:

  • 模塊名要遵循Python變量命名規范,不要使用中文、特殊字符;

  • 模塊名不要和系統模塊名沖突,最好先查看系統是否已存在該模塊,

    檢查方法是在Python交互環境執行import abc,若成功則說明系統存在此模塊。

?

參考:

https://www.liaoxuefeng.com/wiki/1016959663602400/1017454145014176

https://www.python.org/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455888.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Css中的選擇器

Css選擇器 CSS代碼用來修飾 HTML元素. 要用CSS代碼設置樣式, 首先要選中HTML元素. 用來選中 元素的 代碼稱為 選擇器, 或 選擇符. html元素是指, 標簽與標簽包裹內容的整體. 常用的選擇器有如下幾種: 1、標簽選擇器 標簽選擇器,此種選擇器影響范圍大…

福州聯通與市政府攜手 共筑新型智慧城市

“福州聯通今年將投入專項資金,在福州市區建設NB-IoT網絡,包括2000個載扇部署,建設一張覆蓋完備、性能領先的窄帶物聯網。”據介紹,去年9月,福州聯通與福州市政府正式簽署《共同推進窄帶物聯網(NB-IoT&…

流媒體技術的國內外動態

1、大規模流媒體應用中關鍵技術的研究 支持大規模用戶在線使用的流媒體應用是Internet中極富潛力的一項“重磅級用”,但由于Internet缺乏服務質量(QoS)與相應的安全保障,并且網絡和終端系統又存在著較大的異構性,這使得在Internet上構建支持大規模用戶的在線流媒體應用面臨很多…

空間直線與平面的交點

這內容屬于計算幾何,在 3D游戲開發編程基礎 或者在游戲開發中的數學和物理算法 這種資料上也可以找到相關的內容和代碼。或者更廣泛點稱為是計算機圖形學, 接下來我們進入正題,如果直線不與平面平行,將存在交點。如下圖所示&#…

iphone導出視頻 無法連接到設備_拷貝iphone照片,顯示無法連接設備?TRIZ 3秒鐘解決...

手機存儲滿了,想把手機里面的照片和視頻拷貝出來。 又不想交給蘋果cloud的“蘋果稅”。USB手動連上IPHONE,結果每次復制了幾百兆,就會彈出“無法連接設備”,導致拷貝失敗。并且每次重新連接之后,刪掉的照片又出現在手機…

【Python基礎入門系列】第07天:Python 數據結構--序列

python內置序列類型最常見的是列表,元組和字符串。(序列是python中最基礎的數據結構,而數據結構是計算機存儲,組織數據的方式。) 另外還提供了字典和集合的數據結構,但他們屬于無順序的數據集合體&#xf…

Css顏色和文本字體

Css顏色,文本字體 css顏色表示法 顏色名表示,比如:red 紅色,gold 金色16進制數值表示,比如:#ff0000 表示紅色,這種可以簡寫成 #f00RGB顏色: 紅(R)、綠(G)、藍(B)三個顏色通道的變化 background-color: r…

springBoot(20):使用Spring Session實現集群-redis

一、session集群的解決方案1.1、擴展指定server利用Servlet容器提供的插件功能,自定義HttpSession的創建和管理策略,并通過配置的方式替換掉默認的策略。缺點:耦合Tomcat/Jetty等Servlet容器,不能隨意更換容器。1.2、利用Filter利…

docker desktop ubuntu鏡像_原創 | Docker入門,看了不理解,假一賠命

寫在前面這篇博客適合誰?對于Docker并不了解,只是有一點模糊的感覺,覺得Docker可以當成虛擬機用之類的只是下載了Docker軟件,對于怎么配置,怎么玩,第一步干什么,完全一無所知其二,我…

Windows - Windows下安裝MSI程序遇到2503和2502錯誤

三個步驟可以解決這個問題&#xff1a; 1&#xff09; 以管理員身份開啟命令行模式并鍵入msiexec /package <msi文件路徑> 2&#xff09; 修改組策略 計算機配置 ->> 管理模板 ->> Windows組件 ->> Windows Installer ->> 始終以提升的權限進行安…

如何確定h.264的碼率

A:如何確定h.264的碼率&#xff1f; 碼率 編碼產生的總比特數 * 幀頻 / 編碼總幀數碼率控制機制就是使編碼器編碼產生的碼流盡量符合你設定的碼率。從上面的公式可以看出&#xff0c;當編碼幀數和幀頻確定后&#xff0c;碼率控制要做的就是控制編碼產生的比特數。 A:我現在想…

【Python基礎入門系列】第08天:Python List

Python內置的一種數據類型是列表&#xff1a;list。list是一種有序的集合&#xff0c;可以隨時添加和刪除其中的元素。 LIST 列表 比如&#xff0c;列出班里所有同學的名字&#xff0c;就可以用一個list表示&#xff1a; >>> classmates [liuwang, xuezhang, al…

金屬磁記憶傳感器封裝

金屬磁記憶傳感器封裝 摘 要 通過分析壓力傳感器和FBG傳感器的結構,針對金屬磁記憶傳感器自身特點,結合井下作業要求,提出了金屬磁記憶傳感器的封裝設計原則;根據該原則,設計出了一種金屬磁記憶傳感器的封裝結構,并對其進行了有限元模擬分析;對封裝后的金屬磁記憶傳感器實物進…

【Python基礎入門系列】第09天:Python tuple

Python 中的數據結構是通過某種方式組織在一起的數據元素的集合&#xff0c;這些數據元素可以是數字、字符、甚至可以是其他數據結構 在 Python 中&#xff0c;最基本的數據結構是序列&#xff08;在前面文章我們也說過序列&#xff09;&#xff0c;序列中的每個元素都有一個序…

黑客攻防:關于工業網絡安全的那些事

1、概述 隨著工業信息化的快速發展以及工業4.0時代的到來&#xff0c;工業化與信息化的融合趨勢越來越明顯&#xff0c;工業控制系統也在利用最新的計算機網絡技術來提高系統間的集成、互聯以及信息化管理水平。未來為了提高生產效率和效益&#xff0c;工控網絡會越來越開放&am…

elementui table某一列是否顯示_Vue項目引進ElementUI組件的方法

環境要求NodejsNodejs官網下載地址&#xff1a;http://nodejs.cn/download/具體安裝參考其他資料打開cmd命令行&#xff0c;輸入npm -v&#xff0c;如果出現如下圖的顯示&#xff0c;說明已經安裝正確。如果安裝版本比較老&#xff0c;想升級新版本npm install npm -g安裝 webp…

Entry

Entry&#xff08;單行輸入框&#xff09;用于獲取用戶輸入的文本。 Entry組件僅允許輸入一行文本&#xff0c;如果輸入過長&#xff0c;那么內容將被滾動&#xff0c;意味著字符串不能被全部看到。 1 from tkinter import *2 3 master Tk()4 5 e Entry(master)6 e.pack(padx…

集成電路版圖與工藝課程設計之用CMOS實現Y=AB+C電路與版圖

1 緒論 1.1 設計背景 集成電路設計&#xff08;Integrated circuit design, IC design&#xff09;&#xff0c;亦可稱之為超大規模集成電路設計&#xff08;VLSI design&#xff09;&#xff0c;是指以集成電路、超大規模集成電路為目標的設計流程。集成電路設計涉及對電子器…

關于H264通過RTP傳輸的打包方式

Q:現在小弟初次嘗試H264的編碼通過RTP方式傳輸&#xff0c;具體實驗環境的問題如下&#xff1a;環境&#xff1a;服務器端&#xff0c;H264的幀數據&#xff08;可能超過64k&#xff09;&#xff0c;分成N個1460字節的包&#xff0c;然后加上RTP頭發送。客戶端&#xff0c;VLC播…

AngualrJS之服務器端通信

譯自《AngularJS》 與服務器通信 目前&#xff0c;我們已經接觸過下面要談的主題的主要內容&#xff0c;這些內容包括你的Angular應用如何規劃設計、不同的angularjs部件如何裝配在一起并正常工作以及AngularJS中的模板代碼運行機制的一小部分內容。把它們結合在一起&#xff0…