【python】模塊與包

Python中的模塊和包是組織和管理代碼的重要工具。通過模塊和包,你可以更好地管理和重用你的代碼,使得代碼更加模塊化和可維護。

目錄

前言

正文

一、模塊

? ? ? ? 1、模塊的分類

? ? ? ? ? ? ? ? 1)內置模塊

? ? ? ? ? ? ? ? ? ? ? ? python解釋器中默認擁有的模塊可以直接使用(如:os、random)

? ? ? ? ? ? ? ? 2)第三方模塊

? ? ? ? ? ? ? ? 3)自定義模塊

? ? ? ? 2、模塊的使用

? ? ? ? ? ? ? ? 1)import 模塊名 as 別名

? ? ? ? ? ? ? ? ? ? ? ? 2)from 模塊名 import 函數名?

? ? ? ? ? ? ? ? ? ? ? ? 3)兩種方式的優劣

二、包

? ? ? ? 1、創建一個包

? ? ? ? 2、包的使用,和模塊的導入是一樣的

三、內置變量__name__

總結


前言

????????在一個文件中為了實現某些功能代碼將會越來越長,這樣就會導致代碼的維護性以及可讀性較差。為了避免這種情況,我們可以將不同的函數(功能)進行分類,放在不同的文件里,這樣每個文件的代碼相對較少。更利于我們進行代碼的管理。


正文

一、模塊

? ? ? ? 模塊是一系列功能(函數)的集合體

? ? ? ? 1、模塊的分類

? ? ? ? ? ? ? ? 1)內置模塊
? ? ? ? ? ? ? ? ? ? ? ? python解釋器中默認擁有的模塊可以直接使用(如:os、random)
? ? ? ? ? ? ? ? 2)第三方模塊

? ? ? ? ? ? ? ? ? ? ? ? 由其他大佬寫好的模塊,需要到網上下載(如:requests、pandas)

? ? ? ? ? ? ? ? ? ? ? ? 下載方式:在終端中輸入命令pip install 模塊名 -i [鏡像源]

? ? ? ? ? ? ? ? 3)自定義模塊

? ? ? ? ? ? ? ? ? ? ? ? 自己寫的模塊,模塊名稱需要遵循標識符的規定

? ? ? ? 2、模塊的使用

????????先導入模塊同一個模塊只需要導入一次,通常是把導入模塊的代碼放在文件的開頭導入后,可以在程序的任意地方使用模塊里的功能。導入一個模塊時模塊中的代碼會被執行一遍。

? ? ? ? ? ? ? ? 1)import 模塊名 as 別名

? ? ? ? ? ? ? ? ? ? ? ? 該方式會導入模塊中的所用功能,可以通過模塊名調用該模塊中的所有函數

? ? ? ? ? ? ? ? ? ? ? ? 作用:導入模塊中的所有內容

? ? ? ? ? ? ? ? ? ? ? ? 別名:當模塊名太長時,可以通過as來重命名

例:

模塊login.py中的內容

# 這是一個用于檢查用戶名與密碼是否正確的的模塊
def Login():user = input('請輸入用戶名:')password = input('請輸入密碼:')if user == '寫代碼也擺爛':if password == '123':return Truereturn False# 用于輸出登入是否成功
def Login_TF(buer):if buer:print('登入成功')else:print('用戶名或密碼錯誤')

?main.py中的內容

# 這里是主文件
# 使用import直接調用調用登入模塊
import login
# 該方式會導入模塊中的所用功能,可以通過模塊名調用該模塊中的所有函數print('調用login.Login()的結果')print(login.Login())print('調用login.Login_TF(login.Login())的結果')login.Login_TF(login.Login())# 對模塊名進行重命名
import login as lgprint('重命名后調用lg.Login()的結果')print(lg.Login())

運行main.py結果:

????????????????2)from 模塊名 import 函數名?

? ? ? ? ? ? ? ? ? ? ? ? 該方法是是用于指定導入模塊中的功能/變量

? ? ? ? ? ? ? ? ? ? ? ? 作用:導入模塊中指定的功能

????????????????3)兩種方式的優劣

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 優:使用import導入可以直接使用模塊中的所有函數較為方便,使用form導入可以針對性的導入自己需要使用的函數,?所需要占用的資源少

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 劣:import直接導入所用功能,會占用較多的資源且模塊中大部分的函數不會被使用到。使用from導入如果需要使用較多的函數時會比較麻煩

二、包

? ? ? ? 如果說模塊是功能(函數的集合體),那么包就是模塊的集合體,它的作業與模塊類似,不過它是用來對模塊進行分類的。

? ? ? ? 1、創建一個包

? ? ? ? ? ? ? ? 步驟:new--python package(包的命名遵守標識符的規定)

????????????????一個包本質上是一個包含了一些模塊和一個特殊的 __init__.py 文件的目錄。、

????????????????__init__.py :導包的時候會自動執行init文件里

? ? ? ? 2、包的使用,和模塊的導入是一樣的

? ? ? ? 語法:import 包名.模塊名

? ? ? ? ? ? ? ? ? from 包名 import 模塊名

? ? ? ? ? ? ? ? ? from 包名.模塊名 import 函數名/變量名

三、內置變量__name__

?????????當 Python 解釋器加載一個模塊時,它會將該模塊的名稱賦值給 __name__ 變量。如果模塊是主程序,Python 解釋器會將 __name__ 設置為 "__main__";否則,如果模塊是被導入的,__name__ 就是模塊的名稱。

作為主程序運行時:

?作為模塊被引用時(導入一個模塊時模塊中的代碼會被執行一遍):

?????????該變量常用于判斷一個文件是被直接執行還是被導入到另一個文件中執行。通常用于測試模塊中的功能是否能正常使用。

# 這是一個用于檢查用戶名與密碼是否正確的的模塊
def Login():user = input('請輸入用戶名:')password = input('請輸入密碼:')if user == '寫代碼也擺爛':if password == '123':return Truereturn Falseif __name__ == '__main__':# 判斷該文件是否被直接執行,如果是則執行以下代碼# 以下代碼用于測試該文件中的函數是否能正常使用# 如果該文件被當作模塊來調用則不會執行以下代碼print(__name__)Login()

直接運行該文件(運行了if中的語句):

?

?調用該文件(沒有執行if中的語句):


總結

? ? ? ?多個數據放在一起稱為 列表、元組、字典、集合等

? ? ? ? 多個語句放在一起完成一個功能,稱為函數

? ? ? ? 多個函數放在一起,稱為模塊

? ? ? ? 多個模塊放在一起,稱為包

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

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

相關文章

用戶需求甄別和篩選的6大標準

產品經理日常經常接收到大量的需求,并不是所有的需求都需要開發,需要進行甄別和篩選,這樣有利于確保項目的成功、優化資源利用以及提高產品質量。 那么針對這些用戶需求進行甄別或篩選的評判標準是什么?需求篩選可以說是初步的需求…

代碼隨想錄-算法訓練營day31【貪心算法01:理論基礎、分發餅干、擺動序列、最大子序和】

代碼隨想錄-035期-算法訓練營【博客筆記匯總表】-CSDN博客 第八章 貪心算法 part01● 理論基礎 ● 455.分發餅干 ● 376. 擺動序列 ● 53. 最大子序和 貪心算法其實就是沒有什么規律可言,所以大家了解貪心算法 就了解它沒有規律的本質就夠了。 不用花心思去研究其…

C++牛客周賽題目分享(2)小紅叕戰小紫,小紅的數組移動,小紅的素數合并,小紅的子序列求和

目錄 ?編輯 1.前言 2.四道題目 1.小紅叕戰小紫 1.題目描述 2.輸入描述 3.輸出描述 4.示例 5.題解與思路 2.小紅的數組移動 1.題目描述 2.輸入描述 3.輸出描述 4.示例 5.題解與思路 3.小紅的素數合并 1.題目描述 2.輸入描述 3.輸出描述 4.示例 5.題解與思…

增強For循環執行順序探究

增強For循環執行順序探究 增強For循環基礎執行順序探討對于數組對于集合 經典示例數組示例集合示例(ArrayList) 注意事項結論 在Java編程中,增強型for循環(也稱為“foreach”循環)是一種簡潔而強大的迭代集合或數組元素…

super

super 一、理解 super.屬性:在子類中,調用父類非私有化的成員屬性 super.方法:在子類中,調用父類非私有化的成員方法 super():在子類構造方法中調用父類非私有的構造方法 二、案例 需求:編寫中國人和日本人…

云原生新手和開源教育分論壇 01-Kubernetes 社區:從新手到影響者

2024年04月20日 上海KCD & Shanghai:https://community.cncf.io/events/details/cncf-kcd-shanghai-presents-kcd-shanghai-2024/視頻觀看:https://www.bilibili.com/video/BV1nD421T786/?spm_id_from333.999.0.0&vd_sourceae7b192be069682aabc…

【FreeRTOS 快速入門】-- 1、STM32工程移植FreeRTOS

目錄 一、新建STM32工程 為了示范完整的移植過程,我們從0開始,新建一個標準的STM32點燈工程。 (本篇以CubeMX作示范,CubeIDE操作近同,可作對比參考) 1、新建工程 選擇 芯片型號 新建工程 2、搜索芯片型號…

24年做抖音小店,你還停留在數據?別人都已經開始注重利潤了

大家好,我是電商笨笨熊 一件事情持續做,一個項目持續深耕,意義到底是什么? 這句話我常常說,但很多人似乎走偏了實際意義; 尤其對于新手來說,做抖音小店總是向往某某老玩家多么牛的數據&#…

程序員健康指南:運動,讓代碼更流暢

程序員健康指南:運動,讓代碼更流暢 程序員,一個與電腦相伴的群體,長時間的久坐和高強度的腦力勞動是他們的日常。然而,久坐不僅影響體態,更對心臟健康構成威脅。根據《歐洲心臟雜志》的研究,中…

第十三節 huggingface的trainner解讀與Demo

文章目錄 前言一、trainer和TrainingArguments訓練與預測完整Demo1、數據構建2、TrainingArguments構建3、Trainer初始化4、模型訓練5、模型推理6、完整demo代碼7、完整運行結果二、輔助函數1、yield返回內容2、迭代器中斷恢復迭代demo3、yield from結構4、torch.Generator()的…

【PPT技巧】ppt文件打開就是只讀模式,如何改為可編輯模式?

PPT文檔打開是只讀模式,如何改成可編輯文檔呢?這需要分幾種情況來說,所以今天將介紹幾種方法幫助PPT只讀文檔改為可編輯文檔。 方法一: 我們可以先查看一下文件屬性,屬性中有只讀屬性,當我們打開文檔之后帶…

C++入門——引用(2)

前言 上一節我們開始學習了C,并且對C有了初步的了解,這一節我們繼續學習C的基礎,那么廢話不多說,我們正式進入今天的學習 C中的引用 1.1引用的概念 引用不是新定義一個變量,而是給已存在變量取了一個別名&#xff0…

uniapp小程序:大盒子包裹小盒子但是都有點擊事件該如何區分?

在開發過程中我們會遇到這種情況,一個大盒子中包裹這一個小盒子,兩個盒子都有點擊事件,例如: 這個時候如果點擊評價有可能會點擊到它所在的大盒子,如果使用css中的z-index設置層級的話如果頁面的盒子多的話會混亂&…

Spring解決泛型擦除的思路不錯,現在它是我的了。

你好呀,我是浮生。 Spring 的事件監聽機制,不知道你有沒有用過,實際開發過程中用來進行代碼解耦簡直不要太爽。 但是我最近碰到了一個涉及到泛型的場景,常規套路下,在這個場景中使用該機制看起來會很傻,但…

15、FreeRTOS 軟件定時器

文章目錄 一、什么是定時器?1.1 定時器的理解1.2 軟件定時器的特性 二、 軟件定時器的上下文2.1 守護任務2.2 守護任務的調度2.3 回調函數 三、軟件定時器的函數3.1 創建3.2 刪除3.3 啟動/停止3.5 修改周期3.6 定時器ID 四、案例4.1 一般使用4.2 消除抖動 一、什么是定時器? …

怎么解決ModuleNotFoundError: No module named ‘httpx_sse‘

解決方案 pip install httpx_sseLooking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting httpx_sse Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-n…

Android 14.0 frameworks添加自定義服務

1.概述 在14.0的系統rom定制化產品開發中,對于提供系統接口來給app調用,來控制系統的某些功能,所以需要添加自定義服務也是常有功能,因此需要來在frameworks層中添加自定義系統服務的功能 2.frameworks添加自定義服務的核心類 frameworks\base\services\java\com\android…

Midjourney Imagine API 申請及使用

Midjourney Imagine API 申請及使用 申請流程 要使用 Midjourney Imagine API,首先可以到 Midjourney Imagine API 頁面點擊「Acquire」按鈕,獲取請求所需要的憑證: 如果你尚未登錄或注冊,會自動跳轉到登錄頁面邀請您來注冊和登…

多線程【LeetCode】

多線程【LeetCode】 前言前言推薦多線程信號量1114.按序打印1115.交替打印FooBar1116.打印零與奇偶數1117.H2O生成1188.設計有限阻塞隊列Plus1195.交替打印字符串1226.哲學家進餐 最后 前言 這是陳舊已久的草稿2022-11-27 20:44:17 這個是刷算法,也是準備寒假實習…

語音轉文字服務的調用接口

語音轉文字(Speech-to-Text,STT)技術允許將口語化的語音轉換成書面文字。以下是一些提供語音轉文字服務的調用接口及其特點。北京木奇移動技術有限公司,專業的軟件外包開發公司,歡迎交流合作。 1.訊飛開放平臺語音轉寫…