摘要:一什么是模塊中,一個文件就稱之為一個模塊。所有的內置函數為避免模塊名沖突,又引入了按目錄來阻止模塊沖突的方法,稱為包。例如下列小程序以自建的模塊,編寫一個的模塊。如果在其他地方導入該模塊時,判斷將失敗,即僅在此模塊多帶帶運行時生效。
Python中,一個.py文件就稱之為一個模塊。
那么使用模塊有什么好處呢?
(1)提高了代碼的可維護性。
(2)代碼不必從零開始,當一個模塊編寫完畢后,就可以被其他地方應用。
(3)可以避免函數名和變量名沖突,相同的函數名和變量可以存放在不同的模塊中,但是要注意盡量不要與內置函數名字沖突。
Python所有的內置函數:https://docs.python.org/3/lib...
為避免模塊名沖突,python又引入了按目錄來阻止模塊沖突的方法,稱為包(python package)。
一個abc.py的文件就是一個名字為abc的模塊,一個xyz.py的文件就是一個名字為xyz的模塊。假如abc和xyz這兩個模塊名字與其他模塊沖突了,于是我們可以通過不同的包來組織模塊,避免模塊沖突。
則可為:
↓ mycompany # 按目錄存放 _init_.py # 模塊名:mycompany abc.py # 模塊名:mycompany.abc xyz.py # 模塊名:mycompany.xyz
引入了包以后,只要頂層的包名不與別人沖突,那所有模塊都不會與別人沖突。
每一個包目錄下都會有一個_init_.py的文件,這個文件是必須存在的,否則python就把這個目錄當成普通目錄,而不是一個包。
_init_.py可以是空文件,也可以有python代碼,因為_init_.py本身就是一個模塊。
Python內置了很多非常有用的模塊,只要安裝完畢,這些模塊就可以通過import立刻導入使用。
例如下列小程序:以自建的sys模塊,編寫一個hello的模塊hello.py 。
# !/usr/bin/env python # -1- # -*-coding:utf-8 -*- # -2- _author_ = "xionglp" # 使用_author_變量把作者寫進去 import sys def test(): args = sys.argv if len(args) == 1: print ("hello,world!") elif len(args) ==2: print("hello,%s !"% args[1]) else: print("too many arguments!") if __name__ == "__main__": test()
說明:
注釋 # -1- :讓該.py文件直接在unix/linux/mac上運行
注釋 # -2- :.py文件使用標準UTF-8 編碼
import sys:導入sys模塊。之后便可以利用sys這個變量,訪問sys模塊的所有功能。
sys模塊有一個argv變量,用list存儲了命令行的所有參數。argv至少有一個元素,因為第一個參數永遠是該.py文件的名稱。
當在命令行運行hello.py文件時,python解釋器就把一個特殊變量__name__置為__main__。如果在其他地方導入該模塊時,if判斷將失敗,即if僅在此模塊多帶帶運行時生效。因此這種if測試可以讓一個模塊通過命令行運行時執行一些額外的代碼,最常見的就是運行測試。
在交互式環境(cmd)中導入該模塊:
>>> import hello >>> hello.test() hello, world!三、安裝使用第三方模塊
除了Python自己的包,還可以安裝安裝第三方模塊。第三方包安裝是通過包管理工具pip完成的。
一般來說,第三方庫都會在Python官方的pypi.python.org網站注冊。所以要安裝一個第三方庫,必須先知道該庫的名稱,可以在官網或者pypi上搜索。比如Pillow的名稱叫Pillow,因此,安裝Pillow的命令就是:pip install Pillow
步驟1:找到安裝Python路徑中的easy_install.exe,例如:D:PythonScripts
步驟2:打開cmd,輸入安裝命令:easy_install.exe pip (pip安裝成功)
步驟3:在cmd下執行pip,輸入命令:pip install pillow
如下:
安裝成功后便可以使用Pillow了。其他常用的第三方庫還有:MySQL的驅動、用于科學計算的NumPy庫等等。
pip升級:
在使用pip進行安裝時,有時候會提示pip的版本太低,需要upgrade。提示會給出要執行的語句,按照提示執行就行。
執行命令:python –m pip install –upgrade pip
我們也可以導入自己寫入的模塊。當我們試圖加載一個模塊時,Python會在指定的路徑下搜索對應的.py文件,如果找不到,就會報錯,例如:
默認情況下,Python解釋器會搜索當前目錄、所有已安裝的內置模塊和第三方模塊,搜索路徑存放在sys模塊的path變量中:
>>>import sys >>>sys.path
如果我們要添加自己的搜索目錄,有兩種方法:
法一:直接修改sys.path,添加要搜索的目錄,這種方法是在運行時修改,運行結束后失效。
>>> import sys >>> sys.path.append("/Users/xionglp/my_py_scripts")
法二:設置環境變量PYTHONPATH,該環境變量的內容會被自動添加到模塊搜索路徑中。設置方式與設置Path環境變量類似。注意只需要添加你自己的搜索路徑,Python自己本身的搜索路徑不受影響。
【補充點能量】if __name__ =="__main__":
__name__:為系統變量,有兩個取值。當模塊是被調用執行時,取值為模塊的名字;當模塊是直接執行時,則該變量取值為__name__。
if __name__ == "__main__"實現的功能:可以讓模塊既可以導入到別的模塊中用,也可以自己執行。
英文解釋說:make a script both importable and executeable
例如:新建模塊atest.py
# !/usr/bin/env python3 # -*- coding:utf-8 -*- "a test module" def addFunc(a, b): return a + b print("a_test_module"s result is ", addFunc(1, 1))
新建模塊anothertest.py
# !/usr/bin/env python3 # -*- coding :utf-8 -*- "another test module" import atest print("調用another test module模塊執行的結果時:",atest.addFunc(12,23))
運行:
D:Python_project>python atest.py a_test_module"s result is 2 D:Python_project>python anothertest.py a_test_module"s result is 2 調用another test module模塊執行的結果時: 35
說明:當運行anothertest.py的時候,先運行了atest.py,再運行anothertest.py。
若不希望出現atest的內容,python提供了一個系統變量:__name__。可以把被調用的測試代碼寫在if語句里,當調用該module時,此時的__name__取值為該模塊的名字,所以if判斷為假,不執行后續代碼如下:
if __name__ == "__main__":` print ("atest的計算結果:",addFunc(1,1))
則運行結果為:
D:Python_project>python anothertest.py 調用another test module模塊執行的結果時: 35
此時我們就得到了預期結果,不輸出多余的結果。
? thanks for watching, keep on updating...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42469.html
摘要:如果你這個腳本想要使用其它腳本里面的變量函數和類也是可以的,在你這個腳本里面用來導入要引用的腳本,而那個被引用的腳本就稱作模塊。 在此之前,我們運行一些簡短的Python代碼,都是通過Python解釋器(python或ipython)進行的,如果我們退出解釋器再重新運行解釋器后,上次敲進去的變量、函數等都不見了,沒有保存下來。為了保存我們曾經寫過的代碼,就是要寫成.py文件,稱為腳本。...
摘要:的模塊其實就是封裝了一個或者多個功能的代碼集合,以便于重用,模塊可以是一個文件也可以是一個目錄,目錄的形式稱作包。已經導入的模塊會保存在字典中。 Python的模塊其實就是封裝了一個或者多個功能的代碼集合,以便于重用,模塊可以是一個文件也可以是一個目錄,目錄的形式稱作包。 模塊分類 內置模塊 內置模塊可以理解成當你安裝好python環境之后,直接可以使用import導入的就是內置模塊,...
摘要:最近在看的官方文檔,提到一個的用法,很是不理解,所以查找了很多文檔,并進行了如下總結。的用途定位并執行該模塊。可讀取包內任何文件內容。如果沒有,則從查找,找到后載入內存,并加入到字典,名稱也將導入到當前模塊的命名空間。 最近在看 __main__ 的官方文檔 —— https://docs.python.org/3/library/__main__.html#module-__main...
摘要:相對導入相對導入使用模塊的決定它是否在一個包內。當你是用類似進行相對導入的時候,點表明在包的層次中上升多少。所以,你不能在交互式會話中直接使用任何相對導入。 源題目與答案地址如下http://stackoverflow.com/questions/14132...。下面是我的翻譯(看作機翻也行),以及原文。 這個問題是如何解決在相對導入的時候,如果出現System Error的時候的解...
摘要:一概念通常的程序的構架是指將一個程序分割為源代碼文件的集合以及將這些部分連接在一起的方法。的程序構架可表示為一個程序就是一個模塊的系統。它有一個頂層文件啟動后可運行程序以及多個模塊文件用來導入工具庫。導入是中程序結構的重點所在。 一、概念 通常的Python程序的構架是指:將一個程序分割為源代碼文件的集合以及將這些部分連接在一起的方法。 Python的程序構架可表示為: showImg...
閱讀 3169·2021-09-10 10:51
閱讀 3350·2021-08-31 09:38
閱讀 1638·2019-08-30 15:54
閱讀 3128·2019-08-29 17:22
閱讀 3213·2019-08-26 13:53
閱讀 1959·2019-08-26 11:59
閱讀 3283·2019-08-26 11:37
閱讀 3307·2019-08-26 10:47