❶ python中的模塊和包的區別
1、模塊(Mole)就是包含代碼的文件,不一定是Python代碼,有四種代碼類型的模塊:
•使用Python寫的程序( .py文件)
•C或C++擴展(已編譯為共享庫或DLL文件)
•包(包含多個模塊)
•內建模塊(使用C編寫並已鏈接到Python解釋器內)
使用模塊可以提高代碼的可維護性和重復使用,還可以避免函數名和變數名沖突。相同名字的函數和變數完全可以分別存在不同的模塊中,所以編寫自己的模塊時,不必考慮名字會與其他模塊沖突,但要注意盡量不要與內置函數名字沖突。
2、包(Package)就是包含模塊文件的目錄,目錄名稱就是包名稱,目錄中可以包含目錄,子目錄也是包,但包名稱應該包含上一級目錄的名稱。Python引入了按目錄來組織模塊是為了避免模塊名沖突,不同包中的模塊名可以相同。
注意,每一個包目錄下面都會有一個__init__.py的文件,這個文件是必須存在的,否則,Python就把這個目錄當成普通目錄,而不是一個包。__init__.py可以是空文件,也可以有Python代碼,因為__init__.py本身就是一個模塊,而它的模塊名就是包名。
❷ python有哪些庫
Python中6個最重要的庫:
第一、NumPy
NumPy是Numerical
Python的簡寫,是Python數值計算的基石。它提供多種數據結構、演算法以及大部分涉及Python數值計算所需的介面。NumPy還包括其他內容:
①快速、高效的多維數組對象ndarray
②基於元素的數組計算或數組間數學操作函數
③用於讀寫硬碟中基於數組的數據集的工具
④線性代數操作、傅里葉變換以及隨機數生成
除了NumPy賦予Python的快速數組處理能力之外,NumPy的另一個主要用途是在演算法和庫之間作為數據傳遞的數據容器。對於數值數據,NumPy數組能夠比Python內建數據結構更為高效地存儲和操作數據。
第二、pandas
pandas提供了高級數據結構和函數,這些數據結構和函數的設計使得利用結構化、表格化數據的工作快速、簡單、有表現力。它出現於2010年,幫助Python成為強大、高效的數據分析環境。常用的pandas對象是DataFrame,它是用於實現表格化、面向列、使用行列標簽的數據結構;以及Series,一種一維標簽數組對象。
pandas將表格和關系型資料庫的靈活數據操作能力與Numpy的高性能數組計算的理念相結合。它提供復雜的索引函數,使得數據的重組、切塊、切片、聚合、子集選擇更為簡單。由於數據操作、預處理、清洗在數據分析中是重要的技能,pandas將是重要主題。
第三、matplotlib
matplotlib是最流行的用於制圖及其他二維數據可視化的Python庫,它由John D.
Hunter創建,目前由一個大型開發者團隊維護。matplotlib被設計為適合出版的制圖工具。
對於Python編程者來說也有其他可視化庫,但matplotlib依然使用最為廣泛,並且與生態系統的其他庫良好整合。
第四、IPython
IPython項目開始於2001年,由Fernando
Pérez發起,旨在開發一個更具交互性的Python解釋器。在過去的16年中,它成為Python數據技術棧中最重要的工具之一。
盡管它本身並不提供任何計算或數據分析工具,它的設計側重於在交互計算和軟體開發兩方面將生產力最大化。它使用了一種執行-探索工作流來替代其他語言中典型的編輯-編譯-運行工作流。它還提供了針對操作系統命令行和文件系統的易用介面。由於數據分析編碼工作包含大量的探索、試驗、試錯和遍歷,IPython可以使你更快速地完成工作。
第五、SciPy
SciPy是科學計算領域針對不同標准問題域的包集合。以下是SciPy中包含的一些包:
①scipy.integrate數值積分常式和微分方程求解器
②scipy.linalg線性代數常式和基於numpy.linalg的矩陣分解
③scipy.optimize函數優化器和求根演算法
④scipy.signal信號處理工具
⑤scipy.sparse稀疏矩陣與稀疏線性系統求解器
SciPy與Numpy一起為很多傳統科學計算應用提供了一個合理、完整、成熟的計算基礎。
第六、scikit-learn
scikit-learn項目誕生於2010年,目前已成為Python編程者首選的機器學習工具包。僅僅七年,scikit-learn就擁有了全世界1500位代碼貢獻者。其中包含以下子模塊:
①分類:SVM、最近鄰、隨機森林、邏輯回歸等
②回歸:Lasso、嶺回歸等
③聚類:K-means、譜聚類等
④降維:PCA、特徵選擇、矩陣分解等
⑤模型選擇:網格搜索、交叉驗證、指標矩陣
⑥預處理:特徵提取、正態化
scikit-learn與pandas、statsmodels、IPython一起使Python成為高效的數據科學編程語言。
❸ Python模塊的幾種類型簡介
view plain to clipboardprint?
import os
import stat
import time<DIV></DIV>
fileStats = os.stat ( 'test.txt' )
fileInfo = {
'Size' : fileStats [ stat.ST_SIZE ],
'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ),
'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ),
'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ),
'Mode' : fileStats [ stat.ST_MODE ]
}
for infoField, infoValue in fileInfo:
print infoField, ':' + infoValue
if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ):
print 'Directory. '
else:
print 'Non-directory.'
import os
import stat
import time
fileStats = os.stat ( 'test.txt' )
fileInfo = {
'Size' : fileStats [ stat.ST_SIZE ],
'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ),
'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ),
'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ),
'Mode' : fileStats [ stat.ST_MODE ]
}
for infoField, infoValue in fileInfo:
print infoField, ':' + infoValue
if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ):
print 'Directory. '
else:
print 'Non-directory.'
❹ python中包是什麼
python包
包是一個有層次的文件目錄結構,它定義了由n個模塊或n個子包組成的python應用程序執行環境。
通俗一點:包是一個包含__init__.py 文件的目錄,該目錄下一定得有這個__init__.py文件和其它模塊或子包。
python庫是參考其它編程語言的說法,就是指python中的完成一定功能的代碼集合,供用戶使用的代碼組合。在python中是包和模塊的
形式。
推薦學習《python教程》
一般按照API的慣例來設計庫。
應用程序介面(英語:Application Programming Interface,簡稱:API),又稱為應用編程介面,就是軟體系統不同組成部分銜接的
約定。由於近年來軟體的規模日益龐大,常常需要把復雜的系統劃分成小的組成部分,編程介面的設計十分重要。程序設計的實踐中,編
程介面的設計首先要使軟體系統的職責得到合理劃分。良好的介面設計可以降低系統各部分的相互依賴,提高組成單元的內聚性,降低組
成單元間的耦合程度,從而提高系統的維護性和擴展性。
❺ python有哪些模塊
Python是一門非常高級的編程語言,內置了許多標准模塊,比如:sys、os、datetime等。
os模塊
os.getcwd() # 獲取當前工作目錄,即當前python腳本工作的目錄路徑
os.chdir("dirname") # 改變當前腳本工作目錄;相當於shell下cd
os.curdir # 返回當前目錄: ('.')
os.pardir # 獲取當前目錄的父目錄字元串名:('..')
os.makedirs('dirname1/dirname2') # 可生成多層遞歸目錄
os.removedirs('dirname1') # 若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依此類推
os.mkdir('dirname') # 生成單級目錄;相當於shell中mkdir dirname
os.rmdir('dirname') # # 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當於shell中rmdir dirname
os.listdir('dirname') # 列出指定目錄下的所有文件和子目錄,包括隱藏文件,並以列表方式列印
os.remove() # 刪除一個文件
os.rename("oldname","newname") # 重命名文件/目錄
os.stat('path/filename') # 獲取文件/目錄信息
os.sep # 輸出操作系統特定的路徑分隔符,win下為"\",linux下為"/"
os.linesep # 輸出當前平台使用的行終止符,win下為" ",Linux下為" "
os.pathsep # 輸出用於分割文件路徑的字元串 win下為;,Linux下為:
os.name # 輸出字元串指示當前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") # 運行shell命令,直接顯示
os.environ # 獲取系統環境變數
os.path.abspath(path) # 返回path規范化的絕對路徑
os.path.split(path) # 將path分割成目錄和文件名二元組返回
os.path.dirname(path) # 返回path的目錄。其實就是os.path.split(path)的第一個元素
os.path.basename(path) #
返回path最後的文件名。如何path以/或結尾,那麼就會返回空值。即os.path.split(path)的第二個元素
os.path.exists(path) # 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) # 如果path是絕對路徑,返回True
os.path.isfile(path) # 如果path是一個存在的文件,返回True。否則返回False
os.path.isdir(path) # 如果path是一個存在的目錄,則返回True。否則返回False
os.path.join(path1[, path2[, ...]]) # 將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略
os.path.getatime(path) # 返回path所指向的文件或者目錄的最後訪問時間
os.path.getmtime(path) # 返回path所指向的文件或者目錄的最後修改時間
os.path.getsize(path) # 返回path的大小
sys模塊
sys.argv # 命令行參數List,第一個元素是程序本身路徑
sys.exit(n) # 退出程序,正常退出時exit(0)
sys.version # 獲取Python解釋程序的版本信息
sys.maxint # 最大的Int值
sys.path # 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變數的值
sys.platform # 返回操作系統平台名稱
datetime模塊
datetime.today()返回一個表示當前本期日期時間的datetime對象
datetime.now([tz])返回指定時區日期時間的datetime對象,如果不指定tz參數則結果同上
datetime.utcnow()返回當前utc日期時間的datetime對象
datetime.fromtimestamp(timestamp[, tz])根據指定的時間戳創建一個datetime對象
datetime.utcfromtimestamp(timestamp)根據指定的時間戳創建一個datetime對象
datetime.strptime(date_str, format)將時間字元串轉換為datetime對象
❻ 盤點Python常用的模塊和包
模塊
1.定義
計算機在開發過程中,代碼越寫越多,也就越難以維護,所以為了編寫可維護的代碼,我們會把函數進行分組,放在不同的文件里。在python里,一個.py文件就是一個模塊。
2.優點:
提高代碼的可維護性。
提高代碼的復用,當模塊完成時就可以在其他代碼中調用。
引用其他模塊,包含python內置模塊和其他第三方模塊。
避免函數名和變數名等名稱沖突。
python內建模塊:
1.sys模塊
2.random模塊
3.os模塊:
os.path:講解
https://www.cnblogs.com/yufeihlf/p/6179547.html
數據可視化
1.matplotlib :
是Python可視化程序庫的泰斗,它的設計和在1980年代被設計的商業化程序語言MATLAB非常接近。比如pandas和Seaborn就是matplotlib的外包,它們讓你能用更少的代碼去調用 matplotlib的方法。
訪問:
https://matplotlib.org/
顏色:
https://www.cnblogs.com/darkknightzh/p/6117528.html
教程:
https://wizardforcel.gitbooks.io/matplotlib-user-guide/3.1.html
2.Seaborn:
它是構建在matplotlib的基礎上的,用簡潔的代碼來製作好看的圖表。Seaborn跟matplotlib最大的區別就是它的默認繪圖風格和色彩搭配都具有現代美感。
訪問:
http://seaborn.pydata.org/index.html
3.ggplot:
gplot 跟 matplotlib 的不同之處是它允許你疊加不同的圖層來完成一幅圖
訪問:
http://ggplot.yhathq.com/
4.Mayavi:
Mayavi2完全用Python編寫,因此它不但是一個方便實用的可視化軟體,而且可以方便地用Python編寫擴展,嵌入到用戶編寫的Python程序中,或者直接使用其面向腳本的API:mlab快速繪制三維圖
訪問:http://code.enthought.com/pages/mayavi-project.html
講解:https://blog.csdn.net/ouening/article/details/76595427https://www.jianshu.com/p/81e6f4f1cdd8
5.TVTK:
TVTK庫對標準的VTK庫進行包裝,提供了Python風格的API、支持Trait屬性和numpy的多維數組。
VTK (http://www.vtk.org/) 是一套三維的數據可視化工具,它由C++編寫,包涵了近千個類幫助我們處理和顯示數據
講解:https://docs.huihoo.com/scipy/scipy-zh-cn/tvtk_intro.html
機器學習
1.Scikit-learn
是一個簡單且高效的數據挖掘和數據分析工具,易上手,可以在多個上下文中重復使用。它基於NumPy, SciPy 和 matplotlib,開源,可商用(基於 BSD 許可)。
訪問:
講解:https://blog.csdn.net/finafily0526/article/details/79318401
2.Tensorflow
最初由谷歌機器智能科研組織中的谷歌大腦團隊(Google Brain Team)的研究人員和工程師開發。該系統設計的初衷是為了便於機器學習研究,能夠更快更好地將科研原型轉化為生產項目。
相關推薦:《Python視頻教程》
Web框架
1.Tornado
訪問:http://www.tornadoweb.org/en/stable/
2.Flask
訪問:http://flask.pocoo.org/
3.Web.py
訪問:http://webpy.org/
4.django
https://www.djangoproject.com/
5.cherrypy
http://cherrypy.org/
6.jinjs
http://docs.jinkan.org/docs/jinja2/
GUI 圖形界面
1.Tkinter
https://wiki.python.org/moin/TkInter/
2.wxPython
https://www.wxpython.org/
3.PyGTK
http://www.pygtk.org/
4.PyQt
https://sourceforge.net/projects/pyqt/
5.PySide
http://wiki.qt.io/Category:LanguageBindings::PySide
科學計算
教程
https://docs.huihoo.com/scipy/scipy-zh-cn/index.html#
1.numpy
訪問
http://www.numpy.org/
講解
https://blog.csdn.net/lm_is_dc/article/details/81098805
2.sympy
sympy是一個Python的科學計算庫,用一套強大的符號計算體系完成諸如多項式求值、求極限、解方程、求積分、微分方程、級數展開、矩陣運算等等計算問題
訪問
https://docs.sympy.org/0.7.1/guide.html#guide
講解
https://www.jianshu.com/p/339c91ae9f41
解方程
https://www.cnblogs.com/zyg123/p/10549354.html
3.SciPy
官網
https://www.scipy.org/
講解
https://blog.csdn.net/wsp_1138886114/article/details/80444621
4.pandas
官網
http://pandas.pydata.org/
講解
https://www.cnblogs.com/linux-wangkun/p/5903945.html
5.blaze
官網
http://blaze.readthedocs.io/en/latest/index.html
密碼學
1.cryptography
https://pypi.python.org/pypi/cryptography/
2.hashids
http://www.oschina.net/p/hashids
3.Paramiko
http://www.paramiko.org/
4.Passlib
https://pythonhosted.org/passlib/
5.PyCrypto
https://pypi.python.org/pypi/pycrypto
6.PyNacl
http://pynacl.readthedocs.io/en/latest/
爬蟲相關
requests
http://www.python-requests.org/
scrapy
https://scrapy.org/
pyspider
https://github.com/binux/pyspider
portia
https://github.com/scrapinghub/portia
html2text
https://github.com/Alir3z4/html2text
BeautifulSoup
https://www.crummy.com/software/BeautifulSoup/
lxml
http://lxml.de/
selenium
http://docs.seleniumhq.org/
mechanize
https://pypi.python.org/pypi/mechanize
PyQuery
https://pypi.python.org/pypi/pyquery/
creepy
https://pypi.python.org/pypi/creepy
gevent
一個高並發的網路性能庫
http://www.gevent.org/
圖像處理
bigmoyan
http://scikit-image.org/
Python Imaging Library(PIL)
http://www.pythonware.com/procts/pil/
pillow:
http://pillow.readthedocs.io/en/latest/
自然語言處理
1.nltk:
http://www.nltk.org/
教程
https://blog.csdn.net/wizardforcel/article/details/79274443
2.snownlp
https://github.com/isnowfy/snownlp
3.Pattern
https://github.com/clips/pattern
4.TextBlob
http://textblob.readthedocs.io/en/dev/
5.Polyglot
https://pypi.python.org/pypi/polyglot
6.jieba:
https://github.com/fxsjy/jieba
資料庫驅動
mysql-python
https://sourceforge.net/projects/mysql-python/
PyMySQL
https://github.com/PyMySQL/PyMySQL
PyMongo
https://docs.mongodb.com/ecosystem/drivers/python/
pymongo
MongoDB庫
訪問:https://pypi.python.org/pypi/pymongo/
redis
Redis庫
訪問:https://pypi.python.org/pypi/redis/
cxOracle
Oracle庫
訪問:https://pypi.python.org/pypi/cx_Oracle
SQLAlchemy
SQL工具包及對象關系映射(ORM)工具
訪問:http://www.sqlalchemy.org/
peewee,
SQL工具包及對象關系映射(ORM)工具
訪問:https://pypi.python.org/pypi/peewee
torndb
Tornado原裝DB
訪問:https://github.com/bdarnell/torndb
Web
pycurl
URL處理工具
smtplib模塊
發送電子郵件
其他庫暫未分類
1.PyInstaller:
是一個十分有用的第三方庫,它能夠在Windows、Linux、 Mac OS X 等操作系統下將 Python 源文件打包,通過對源文件打包, Python 程序可以在沒有安裝 Python 的環境中運行,也可以作為一個 獨立文件方便傳遞和管理。
2.Ipython
一種互動式計算和開發環境
講解
https://www.cnblogs.com/zzhzhao/p/5295476.html
命令
ls、cd 、run、edit、clear、exist
❼ 那些Python中的模塊
Python的解釋環境是很好用,但是如果我們需要編寫一個大型的程序的時候,解釋環境就完全不夠用了。這個時候我們需要將python程序保存在一個文件里。通常這個文件是以.py結尾的。
對於大型的應用程序來說,一個文件可能是不夠的,這個時候我們需要在文件中引用其他的文件,這樣文件就叫做模塊。
模塊是一個包含Python定義和語句的文件。文件名就是模塊名後跟文件後綴 .py 。在模塊內部,模塊名可以通過全局變數 __name__ 獲得。
還是之前的斐波拉赫數列的例子,我們在fibo.py文件中存放了函數的實現:
編寫完畢之後,我們可以在Python的解釋環境中導入它:
然後直接使用即可:
常用的函數,我們可以將其賦值給一個變數:
或者,我們在導入的時候,直接給這個模塊起個名字:
或者導入模塊中的函數:
每個模塊都有它自己的私有符號表,該表用作模塊中定義的所有函數的全局符號表。因此,模塊的作者可以在模塊內使用全局變數,而不必擔心與用戶的全局變數發生意外沖突。
前面我們提到了可以使用import來導入一個模塊,並且 __name__ 中保存的是模塊的名字。
和java中的main方法一樣,如果我們想要在模塊中進行一些測試工作,有沒有類似java中main方法的寫法呢?
先看一個例子:
在模塊中,我們需要進行一個判斷 __name__ 是不是被賦值為 "__main__"。
我們這樣來執行這個模塊:
以腳本執行的情況下,模塊的 __name__ 屬性會被賦值為 __main__ , 這也是例子中為什麼要這樣寫的原因。
看下執行效果:
如果是以模塊導入的話,那麼將不會被執行:
使用import導入模塊的時候,解釋器首先會去找該名字的內置模塊,如果沒找到的話,解釋器會從 sys.path變數給出的目錄列表裡尋找。
sys.path的初始目錄包括:
要想查看模塊中定義的內容,可以使用dir函數。
上面的例子列出了當前模塊中定義的內容,包括變數,模塊,函數等。
我們可以給dir加上參數,來獲取特定模塊的內容:
java中有package的概念,用來隔離程序代碼。同樣的在Python中也有包。
我們看一個Python中包的例子:
上面我們定義了4個包,分別是sound,sound.formats, sound.effects, sound.filters。
__init__.py 可以是一個空文件,也可以執行包的初始化代碼或設置 __all__ 變數。
當導入的時候, python就會在 sys.path 路徑中搜索該包。
包的導入有很多種方式,我們可以導入單個模塊:
但是這樣導入之後,使用的時候必須載入全名:
如果不想載入全名,可以這樣導入:
那麼就可以這樣使用了:
還可以直接導入模塊中的方法:
然後這樣使用:
如果一個包裡面的子包比較多,我們可能會希望使用 * 來一次性導入:
那麼如何去控制到底會導入effects的哪一個子包呢?
我們可以在 __init__.py 中定義一個名叫 __all__ 的列表,在這個列表中列出將要導出的子包名,如下所示:
這樣from sound.effects import * 將導入 sound 包的三個命名子模塊。
如果沒有定義 __all__,from sound.effects import * 語句 不會 從包 sound.effects 中導入所有子模塊到當前命名空間;它只會導入包 sound.effects。
Import 可以指定相對路徑,我們使用 . 來表示當前包, 使用 .. 來表示父包。
如下所示:
❽ python中的模塊、庫、包有什麼區別
模塊,庫,包主要區別在於他們的定義與所指范圍不同。
python模塊,包含並且有組織的代碼片段為模塊,sample.py其中文件名smaple為模塊名字。
而包是一個有層次的文件目錄結構,它定義了由無數個模塊或啟搏隱無數個子包組成的python應用程序執行環境。
庫的概念是具有相關功能模塊的集合。這也是正是Python的一大特色之一,即具有強大的標准庫,還有第三方庫以及自定義模塊。
模塊和包是「存儲層面」
模塊就是一個讓你import的文件包就是讓你importfrom的地方例如你下載好某個包,然後把這個包解壓到某個特定路徑,然後就可以fromxxxximportyyyy.py了剩下的概銀梁念都是「邏輯層面」,是不分語言的類我不想多解釋,隨便找本編程入門書去看吧庫和框架都是用來定義某個包的使用目的的。
框架相當於定了包的用途,在這個用途上你進行二次開發(例如django相當於是一個websrv端),一般最多也就你在main里去調用它的入口或者通過decorator(@)來注冊什麼東西到框架里庫則是相當於一個工具箱,你可以從中拿出任意工具在任意地點使用一悄廳個包里可以有庫,也可以有框架,也可以兩者都有
❾ 從C#到Python——5模塊和包
本章是《從到Python》系列連載的最後一章 內容較簡單 主要介紹Python中模塊與包的使用方法 如果你對這部分內容已經比較熟悉 就不要再浪費時間看了 寫這一章只是為了整個系列完整而已 沒什麼新的東西(本章內容主要參考了《Python精要參考》的第八章《模塊和包》)
模塊
Python的腳本都是用擴展名為py的文本文件保存的 一個腳本可以單獨運行 也可以導入另一個腳本中運行 當腳本被導入運行時 我們將其稱為模塊(mole) 模塊是Python組織代碼的基本方式
模塊名與腳本的文件名相同 例如我們編寫了一個名為Items py的腳本 則可在另外一個腳本中用import Items語句來導入它 在導入時 Python解釋器會先在腳本當前目錄下查找 如果沒有則在sys path包含的路徑中查找
在導入模塊時 Python會做以下三件事
( ) 為模塊文件中定義的對象創建一個名字空間 通過這個名字空間可以訪問到模塊中定義的函數及變數
( ) 在新創建的名字空間里執行模塊文件
( ) 創建一個名為模塊文件的對象 該對象引用模塊的名字空間 這樣就可以通過這個對象訪問模塊中的函數及變數 如
importsys printsys path
如果要同時導入多個模塊 可以用逗號分隔 如 import sys os
可以使用as關鍵字來改變模塊的引用對象名 如 import os as system
也可以用from語句將模塊中的對象直接導入到當前的名字空間(不創建模塊名字空間的引用對象) 如 from socket import gethostname
from語句支持逗號分割的對象 也可以使用星號(*)代表模塊中除下劃線開頭的所有對象 如 from socket import * 這是個懶省事的方法 我是經常用 不過用之前最好先搞清楚會不會覆蓋當前名字空間中的函數名等 總之不是個好習慣:)
除了Python腳本(不僅限於py 還包括pyc和pyo) import語句還可以導入C或擴展(已編譯為共享庫或DLL文件) 包(包含多個模塊 一會介紹)和內建模塊(使用C編寫並已鏈接到Python解釋器內) 不過除了包 另外兩個我也沒用過:(
Python解釋器在第一次import一個py文件的時候 會嘗試將其編譯為位元組碼文件 這個文件的擴展名通常為 pyc 它是已經完成語法檢查並轉譯為虛擬機指令的代碼 後邊的導入操作會直接讀取 pyc文件而不是 py文件 一般而言速度會更快
包
Python的模塊可以按目錄組織為包(package) 一般來說 我們將多個關系密切的模塊組織成一個包 以便於維護和使用 同時可有效避免名字空間沖突 創建一個包的步驟是 建立一個名字為包名字的文件夾 並在該文件夾下創建一個__init__ py文件 你可以根據需要在該文件夾下存放腳本文件 已編譯擴展及子包
一個典型的包可能有以下結構:
package / __init__ py subPack / __init__ py mole_ py mole_ py mole_ py subPack / __init__ py mole_ py mole_ py ……
只要目錄下存在__init__ py 就表明此目錄應被作為一個package處理 在最簡單的例子中 __init__ py 是一個空文件 不過一般我們都要在__init__ py中做一些包的初始化動作 或是設定一些變數
最常用的變數是__all__ 當使用包的人在用from pack import * 語句導入的時候 系統會查找目錄pack下的__init__ py文件中的__all__這個變數 __all__是一個list 包含了所有應該被導入的模塊名稱 例如 __all__ = [ m m m ] 表示當from pack import * 時會import 這三個mole
如果沒有定義__all__ from pack import * 不會保證所有的子模塊被導入 所以要麼通過__init py__ 要麼顯式地import 以保證子模塊被導入 如 import pack m pack m pack m
本章小結
本章介紹了Python中模塊與包的使用方法 要點如下
( ) 模塊是一個可以導入的Python腳本文件
( ) 包是一堆按目錄組織的模塊和子包 目錄下的__init__ py文件存放了包的信息
( ) 可以用import import as form import 等語句導入模塊和包
總之 模塊與包是在物理上組織Python代碼復用的一種有效方式 它有點類似於中的程序集(Assembly) 初學Python不一定要會自己建立模塊和包 但一定要學會使用各種包 這正是Python的強大之處 Python帶著各種各樣的battery 當你想完成一項功能時 最好先去搜索是不是有相關的包能夠復用(多數情況下是這樣的 因為在各種領域都有太多的人在為Python作著貢獻) 而且 絕大多數Python包都是開源的 研讀優秀的代碼也是提高編程能力的一種有效途徑
進一步閱讀的參考
《從C#到Python》系列連載到今天就全部寫完了 非常感謝各位的支持 鼓勵以及批評 使我能夠不斷完善和提高 讀完這個連載 在Python的語法上應該夠應付一陣了 當然結合具體的應用領域 還是有很多東西需要不斷學習 在此向大家推薦一些有用的讀物
[ ] 科學計算方面 這個是我的應用Python的主陣地 推薦HYRY Studio的《用Python做科學計算》(見) 我個人認為非常優秀的一本原創著作(這么好的書不知為何不正式出版 欽佩作者的rp !)
[ ] GUI開發方面 如果你用wxPython 那麼肯定要看《wxPython in Action》(中文版見) 而我個人主要用PyQt 這方面值得推薦的讀物是柴樹杉翻譯的《PyQt 編程簡介》(見) 如果英文好 還是推薦看《Rapid GUI Programming with Python and Qt》(英文pdf版地址 Oct pdf)
[ ] 開發方面 這個我還沒有涉及 Django的資料網上也是大把了 其它的Python Web開發框架也是多如牛毛 自己找找吧 )
lishixin/Article/program/ASP/201311/21672
❿ python中有哪些包
Python的常用包有哪些,分別有什麼作用?
Python常用包
1、Numpy 作用:數值運算庫
2、Scipy 作用:科學計算庫
3、Matplotlib 作用:基礎可視化庫
4、Pandas 作用:數據處理庫
5、Seaborn 作用:高級可視化庫
6、Scikit-learn 作用:流行的機器學習庫
推薦學習《python教程》。