內容簡述:
- 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(模組名)
複製程式碼
如果本文對你有所幫助,歡迎
留言,點贊,轉發
素質三連,謝謝?~