python中的模塊和包

模塊和包


一個模塊就是一個包含python代碼的文件。一個文件就是一個模塊

為什么要使用模塊


1.現在程序開發文件比較大,都放在一個文件中維護不方便,拆分成多個文件方便維護與管理
2.模塊可以增加代碼的重用率
3.模塊可以當作命名空間

如何定義自己的模塊


模塊本身就是一個文件,所有py代碼都可以在文件中直接書寫。不過我們開發共用模塊時,最好在模塊中書寫以下內容。

變量         模塊中的屬性值
函數         單獨的功能
類           相似功能組合
模塊測試代碼   臨時使用,被導入時不會執行

測試代碼:

測試代碼經常在開發模塊時用于測試模塊的功能,但是測試代碼僅在開發和測試時使用,被當作模塊導入時不希望測試代碼運行。需要使用name特殊變量來操作。

if __name__  == '__main__':#測試代碼區域(僅在吧當前文件直接運行時才會執行測試代碼,當作模塊導入時則不會執行)

name 在直接運行當前文件時,結果為main

name 被當作模塊導入文件時,結果為 模塊名稱

模塊的導入方式


import 模塊名

作用:直接導入模塊
使用方法:模塊名.變量名模塊名.函數名模塊名.類名.方法名()模塊名.類名.屬性名

import 模塊 as 別名

作用:直接導入模塊,并且為模塊起一個別名
使用方法:別名.變量名別名.函數名別名.類名.方法名()別名.類名.屬性名

from 模塊 import 某個函數或者類

作用:直接導入模塊中的某個方法或者某個類或變量
使用方法:函數名()變量名類名.方法名()屬性名

from 模塊 import 函數,函數,類,類...

作用:直接導入模塊中的多個方法和多個類和變量
使用方法:函數名()變量名類名.方法名()屬性名

from 模塊 import *

作用:直接導入模塊中的所有方法和類和變量
使用方法:函數名()變量名類名.方法名()屬性名

注意事項:如果采用from 導入的方式要確保模塊中的函數變量等內容不能與系統的內置函數同名,否則會出現異常。

模塊的存放


如果不想自己新建自定義的模塊文件夾,可以將我們自定義的模塊存放到 python 目錄中的\Lib\site-packages中。

搜索路徑就是python在加載模塊時候的查找路徑

1.獲取當前模塊的搜索路徑

import sys

sys.path 獲取當前搜索路徑的列表

2.將自定義的路徑添加到列表中

sys.path.append(自定義路徑)

模塊的加載順序


導入模塊操作的步驟:

1.檢測內存中是否已經加載過當前模塊,如果加載過,直接使用加載的模塊
2.如果內存中沒有加載當前模塊,則搜索python的內置模塊
3.如果當前內置模塊中中沒有該模塊,根據搜索路徑查找并且加載模塊


包就是文件夾,他用于存放文件也就是模塊。包中也可以存放包

包的結構


包
|---- __init__.py 包的標志文件
|---- 模塊1
|---- 模塊2
|---- 子包(文件夾)
|-----|----__init__.py
|---- |----子模塊1
|---- |----子模塊2

包的導入和使用


import 包.模塊

使用方法:包.模塊.變量名包.模塊.函數名()包.模塊.類名.屬性名包.模塊.類名.方法名()

import 包.模塊 as 別名

使用方法:別名.變量名別名.函數名()別名.類名.屬性名別名.類名.方法名()

from 包.模塊 import 函數或者類或者屬性

使用方法:變量名函數名()類名.屬性名類名.方法名()

from 包.模塊 import *

使用方法:變量名函數名()類名.屬性名類名.方法名()

在__init__.py文件中添加內容(當模塊用)


在此情況下可以將包當作模塊直接導入使用

import 包

使用:包.變量名包.函數名()包.類名.屬性名包.類名.方法名()

import 包 as 別名

使用:別名.變量名別名.函數名()別名.類名.屬性名別名.類名.方法名()

from 包 import 函數,類,變量

使用:變量名函數名()類名.屬性名類名.方法名()

from 包 import *

使用:變量名函數名()類名.屬性名類名.方法名()

包和模塊的互相調用問題

如果在當前模塊中需要調用其他模塊或者包的內容時,可以直接使用import 導入對應的包和模塊,就可以加載進來使用,import 會搜索包和模塊對應的搜索路徑(sys.path)

import  模塊或者包

__all__特殊變量的用法

  • 在__init__.py文件中,如果沒有__all__變量,那么使用from 包 import * 僅導入__init__.py中定義的方法和類及其他內容

  • init.py文件中,如果定義all變量,那么使用from 包 import * 則會導入all指定的所有模塊,而忽略init.py文件中的信息

__all__ = ['模塊','模塊','子包'。。。]   #必須是列表

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

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

相關文章

2005年全球H.264編解碼器薈萃

2005年全球H.264編解碼器薈萃videosky.9126.com Peter Lee 2005-0920【摘要】H.264/AVC作為最新的視頻編碼標準,研究領域和產業界都非常看好該標準。尤其是產業界,針對H.264的軟硬件編解碼器可謂是百花齊放、百家爭鳴。本文中,筆者對2005年全…

【Tensorflow】基于卷積神經網絡實現車牌的識別

引言: 過去幾周我一直在涉足深度學習領域,尤其是卷積神經網絡模型。最近,谷歌圍繞街景多位數字識別技術發布了一篇不錯的paper。該文章描述了一個用于提取街景門牌號的單個端到端神經網絡系統。然后,作者闡述了基于同樣的網絡結構…

腳本啟動顯示查詢頻繁被服務器防御_面對CC攻擊,該如何進行防御

網站被攻擊是一件十分讓人惱火的事情,不僅僅是讓網站速度變慢、訪問異常,導致用戶體驗變差,用戶大量流失,而且還會導致網站關鍵詞排名下降甚至被降權,極大干擾了網站的正常穩定運行。那面對CC攻擊,該如何進…

面對SDN/NFV部署挑戰 網絡廠商能做什么?

近年來,隨著云計算的不斷發展,網絡虛擬化受到廣泛關注,而作為網絡虛擬化的實現方式,SDN自誕生之日起就擔負著網絡變革的使命。那么,SDN技術的驅動力是什么?SDN在引入現網的過程中,如何實現平滑無…

python中的tkinter模塊

tkinter介紹 tkinter是python自帶的GUI庫,是對圖形庫TK的封裝 tkinter是一個跨平臺的GUI庫,開發的程序可以在win,linux或者mac下運行 除此之外還存在很多圖形庫,例如 pythonWin 僅適合window的界面編程庫 wxPython 第三方界面編…

PAT甲題題解-1011. World Cup Betting (20)-誤導人的水題。。。

題目不嚴謹啊啊啊啊式子算出來結果是37.975樣例輸出的是37.98我以為是四舍五入的啊啊啊&#xff0c;所以最后輸出的是sum0.005結果告訴我全部錯誤啊結果直接保留兩位小數就可以了啊啊啊啊 水題也不要這么坑人啊啊啊啊 #include <iostream> #include <algorithm> #i…

【Django】文件上傳以及celery的使用

上傳文件、異步、初始化腳本 面試題&#xff1a; 項目中的靜態文件處理&#xff08;JS/CSS/image&#xff09; 自己在機房內優化的方法&#xff1a;1. Nginx/lighttpd(lighty-douban)&#xff1a;Nginx 處理靜態資源速度非常快&#xff0c;并且自身還帶有緩存。2. 80: Nginx -&…

Android 查看每個應用的最大可用內存

http://blog.csdn.net/vshuang/article/details/39647167 Android 內存管理 &Memory Leak & OOM 分析 單個應用可用的最大內存 Android設備出廠以后&#xff0c;java虛擬機對單個應用的最大內存分配就確定下來了&#xff0c;超出這個值就會OOM。這個屬性值是定義在…

分析一段H264視頻數據

分析一段H264視頻數據 Posted on 2007-05-31 09:42 vcommon 閱讀(1968) 評論(8) 編輯 收藏 引用 分析 00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01 H264的數據流分為兩種&#xff0c;一種是NAL UNIT stream(RTP),一種是 bits stream, 兩者可以互相轉換。我們分析的這個…

SVN在vs2013中使用

http://download.csdn.net/download/show_594/9112963 內包含VisualSVN 5.0.1的官方原版安裝包及破解文件VisualSVN.Core.L.dll. 使用方法&#xff1a; 1、運行&#xff1a;VisualSVN-5.0.1.msi 進行原版的安裝。 2、打開VisualSVN的安裝路徑。進入其子目錄bin。將壓縮包內的Vi…

springboot springmvc mybatis_12道重點的Spring Boot面試題,幫你整理好了!

今天跟大家分享下SpringBoot常見面試題的知識。最新2020整理收集的一些面試題&#xff08;都整理成文檔&#xff09;&#xff0c;有很多干貨&#xff0c;包含mysql&#xff0c;netty&#xff0c;spring&#xff0c;線程&#xff0c;spring cloud等詳細講解&#xff0c;也有詳細…

【數據分析】快速獲取微博用戶數據,圖片,視頻

功能輸出實例運行環境使用說明 下載腳本安裝依賴程序設置設置數據庫&#xff08;可選&#xff09;運行腳本按需求修改腳本&#xff08;可選&#xff09; 如何獲取user_id添加cookie與不添加cookie的區別&#xff08;可選&#xff09;如何獲取cookie&#xff08;可選&#xff09…

“云計算”越來越重要 但更重要的是“云安全”

據Gartner公司的預測&#xff0c;云安全服務業務繼續保持強勁&#xff0c;2017年最終將達到59億美元的規模&#xff0c;比2016年上漲了21&#xff05;。 云安全服務市場的增長速度將超過整體信息安全市場。Gartner表示&#xff0c;電子郵件的安全性&#xff0c;網絡安全和身份識…

HTML中Head頭

HTML中Head頭 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>網頁標題</title> </head> <body>網頁顯示內容 </body> </html>HEAD標簽里面負責對網頁進行一些設置以及…

H.264的兩個概念:DC系數和AC系數。 MV預測過程詳解(附圖)

在做熵編碼之前&#xff0c;先明確兩個概念&#xff1a;DC系數和AC系數。 量化后得到的仍是64個系數&#xff0c;量化并沒有改變系數的性質。大家知到DCT變換是將數據域從時&#xff08;空&#xff09;域變換到頻域&#xff0c;在頻域平面上變換系數是二維頻域變量u和v的函數。…

1028. List Sorting (25)

題目鏈接&#xff1a;http://www.patest.cn/contests/pat-a-practise/1028 題目&#xff1a; 1028. List Sorting (25) 時間限制200 ms內存限制65536 kB代碼長度限制16000 B判題程序Standard作者CHEN, YueExcel can sort records according to any column. Now you are suppose…

【后端開發】分析抖音后臺架構

最后分享抖音美女爬蟲 https://github.com/wangshub/Douyin-Bot

看日本如何用IoT打造智能工廠

在技術、市場、政策等方面因素的推動下&#xff0c;全球正在掀起一股智能制造的熱潮&#xff0c;越來越多的國家大力推進智能工廠的建設。有機構預測&#xff0c;未來五年智能工廠領域的投資將促進生產力增長27%&#xff0c;預計到2022年年底&#xff0c;21%的工廠將會成為智能…

HTML標題

HTML標題 通過 <h1>、<h2>、<h3>、<h4>、<h5>、<h6>,標簽可以在網頁上定義6種級別的標題。 6種級別的標題表示文檔的6級目錄層級關系&#xff0c;比如說&#xff1a; <h1>用作主標題&#xff08;最重要的&#xff09;&#xff0c;其…

264中 POC的計算方法

作者&#xff1a;jogh.264 參考代碼 JM86 一參數說明 這一節闡述的是encoder.cfg 中的參數對編碼過程的影響 要注意的是encoder.cfg 中的參數跟input 結構體中的變量是一一對應的 ? StartFrame&#xff1a;從視頻流的第幾幀開始編碼 ? FramesToBeEncoded&#xff1a;指明…