豬行天下之Python基礎——2.1 Python註釋與模組
內容簡述:
- 1、註釋
- 2、模組
1、註釋
註釋是一段「 解釋性 」文字,在程式 執行時 , 會被程式跳過 ,不做處理,一般是對 程式碼的解釋或提示 ,以此提高程式碼的可讀性。寫註釋既方便了別人閱讀程式碼,也方便自己日後回顧,而不用苦思冥想當初寫這段程式碼的目的。當然註釋也不是寫的越多越好,應該「 儘量避免沒用的註釋或寫過多的廢話 」。
Python中提供了兩種註釋方式:「 單行註釋 」和「 多行註釋 」,單行註釋通過 #
進行標識,多行註釋則通過 兩個三引號
來標識,程式碼示例如下:
# 這是一個單行註釋 ''' 這是一個多行註釋 ''' 複製程式碼
2、模組
①模組的基本使用
就是一個Python檔案,以 .py
結尾,包含了Python定義和宣告。舉個簡單的例子:你可以 把常用的程式碼塊抽取出來,放到一個py檔案中 ,然後在 用到 的地方 對自己的模組進行引用 。使用程式碼示例如下:
# 匯入整個模組 import sys # 匯入模組中的需要用到的部分 from sys import argv # 多個的時候可以用逗號隔開 from urllib.error import URLError, HTTPError # 匯入模組中所有不是以下劃線開頭的名字,不建議這樣做,如果同名會覆蓋 # 定義過的名字;如果你硬想用這種匯入方式,可以新增__all__成員來進行約束 # 比如:__all__ = ['a','b'] from sys import * 複製程式碼
另外,在匯入自己的模組的時候,你可能遇到這樣的問題:
寫在模組裡的測試程式碼都執行了!!!
你可以通過內建屬性 __name__
來區分,當此模組作為程式執行時, 值 會等於 __main__
,而作為一個模組 匯入 到其他程式, 值 則等於 檔名字(去掉.py) 。所以可以通過判斷: __name__
是否等於 __main__
來決定測試程式碼是否執行。
簡單的程式碼示例如下:
if __name__ == '__main__': test() 複製程式碼
接著說說幾個問題:
② 重複匯入一個模組多次會怎麼樣?
答:第一次匯入後就將模組名載入到記憶體中,後續的import只是對已載入到記憶體中的
模組物件增加一次引用, 不會重新執行模組裡的語句 。
③ 模組的搜尋路徑與順序?
答:可以通過列印 sys.path
來檢視模組的搜尋路徑,比如我的電腦:
[ '/Users/jay/Project/Python/Book/Chapter 6', '/Users/jay/Project/Python/Book', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Users/jay/Library/Python/3.6/lib/python/site-packages', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages' ] 複製程式碼
從上面不難看出Python對於 模組的搜尋順序
:
程式所在目錄===> 標準安裝目錄 ===> 標準庫安裝目錄 ===> Python環境變數所包含的目錄 。
所以,如果你自定義的模組與內建模組重名的話,會呼叫你的模組而非內建的模組,所以在命名模組的時候還是儘量 別重名 。 如果硬是要同名且兩個模組都用到 ,可以使用「 完整路徑引入 」,並使用 as
關鍵字為模組設定別名。另外,如果你的模組都不在這些搜尋路徑裡的話,可以通過呼叫 sys.path.append("路徑")
臨時把路徑新增到搜尋路徑中。
④ __init__.py檔案是做什麼的?
答: 標識檔案所在的目錄是一個python的模組包(package) ,一般是 空檔案 ,當然你也可以加點東西來 控制包的匯入行為 ,直接在 __init__.py
檔案中 批量匯入所需模組 ,而不用一個個匯入,如下所示(還可以將一些初始化的程式碼放入到該檔案中。)
# xxx包裡的__init__.py import a import b import c # 呼叫這個模組的py檔案 import xxx print(xxx.a,xxx.b,xxx.c) # 還可以利用上面講到的__all__變數來簡化下: # xxx包裡的__init__.py __all__ = ['a','b,'c'] # 呼叫這個模組的py檔案 from xxx import * 複製程式碼
對了,還可以通過 相對匯入 的方式匯入模組,示例如下:
import .a import A# 點號表示使用當前路徑的a模組 import ..b import B # 兩個點號表示訪問上層的父類 複製程式碼
⑤ 模組如何遷移到新的環境?
有時我們寫的模組或者程式碼需要遷移到另一個裝置上去執行,而你的指令碼可能用到了一些依賴模組,如果pip命令一個個裝顯得有些繁瑣,可以通過「 pipreqs 」模組來完成。
答:鍵入 pip install pipreqs
安裝pipreqs模組,接著終端切換到專案路徑,鍵入 pipreqs 匯出檔案的存放路徑
就可以匯出一個 requirements.txt
的依賴檔案,檔案內容就是依賴的模組,複製到新的裝置上,鍵入: pip install -r requirements.txt
即可自動下載安裝需要用到的模組。另外,如果是想把電腦裡Python環境中 所有的模組 遷移到另一臺電腦,可使用命令匯出依賴檔案: pip freeze > requirement.txt
,安裝方法同pipreqs。
⑥ 模組的過載
上面說了重複匯入模組,只是新增一個引用,而不會重新匯入。有時可能需要在同一個會話中去更新模組,可以通過「 imp標準庫中的reload()函式 」來完成。
from imp import reload load(模組名) 複製程式碼
如果本文對你有所幫助,歡迎
留言,點贊,轉發 素質三連,謝謝:kissing_heart:~
