python module是干什么的_如何最简单、通俗地理解Python的模块?
目錄:
一、筆記
二、筆記目錄
一、筆記
1) 模塊
① Python模塊(Module),是一個Python文件,以.py結尾,包含了Python語句和Python對象定義,模塊讓你能夠有邏輯地組織你的Python代碼段。
② 相當于很多類、很多函數包含在一個.py文件,這個.py文件就是一個模塊。
③ 模塊能定義函數,類和變量,模塊里也能包含可執行的代碼,即導入模塊會自動執行這些代碼。
④ 把相關的代碼分配到一個模塊里能讓你的代碼更好用,更易懂。
⑤ 推薦所有的模塊在Python模塊的開頭部分導入,而且最好按照下面的順序:1. Python標準庫模塊
2. Python第三方模塊
3. 應用程序自定義模塊
⑥ 在Python中用關鍵字import來引入某個模塊,比如要導入模塊time,就可以在文件最開始的地方用import time來引入。
# functools就是模塊,是一個functools.py文件,該文件在搜索在搜索路徑下的,reduce是這個文件中的一個方法。
from functools import reduce
2) import
① import A1. 在調用模塊中的函數時,必須加上模塊名調用,因為可能存在多個模塊中含有相同名稱的函數,此時,如果只是通過函數名來調用,解釋器無法知道到底要調用哪個函數。為了避免這樣的情況,調用函數時,必須加模塊名。
2. import time 等價于 from time import *,即把time模塊中的所有方法都導入。
import time
# 第一個time是模塊,第二個time是方法,要用模塊加方法的形式,因為不同模塊可能有相同的方法
print(time.time())
運行結果:1605406639.2172427
import time
# print(sleep(2)) # 會報錯,它不知道sleep()方法是哪個模塊中的,所以不會去調用
print(time.sleep(2)) # 不報錯,僅導入模塊時,一定要用 模塊.方法 的形式
運行結果:None
② from A import b1. 不會把整個模塊導入進來,只會把A模塊的b方法導入進來(相當于把這個方法寫在文件的開頭),不能寫模塊名。
2. 從A模塊里導入一個函數或者一個變量 b。
3. from導入模塊,import導入類名,實例化時可直接用類名了。
from time import time # 僅僅導入了time模塊中time方法
print(time()) # 不會報錯,不用加模塊名
# print(time.time()) # 報錯,相當于僅僅把time方法寫在本文件頭部,不能加模塊名
# print(sleep(1)) # 報錯,除非用 from time import time,sleep
# print(time.sleep(1)) # 報錯,除非用 import time
運行結果:1605406786.6635635
③ import A as b1. 將A重新命名為b。
# time重命名為t
import time as t
print(t.time()) # 等價于原來的 print(time.time()),但重命名后不可以用 print(time.time())
#print(time.time()) # 報錯,無法再用time作為模塊名
運行結果:1611287703.3578482
④ from A.B.c import d1. 軟件項目來說不可能把所有代碼放在一個文件中實現,它們一般會按照一定規則在不同的目錄和文件中實現,然后互相調用。
2. 從當前路徑下,A文件夾下B文件夾下的c模塊中,導入d方法
'''
import p 調用本文件的當前目錄下的 p模塊
import C.c1 調用當前路徑下的C文件夾下的c1.py模塊
import C.c2 import c5 調用當前路徑下的C文件夾下的c2.py模塊中的c5方法
'''
3) 模塊內置屬性
① __doc__ 為打印文檔說明(只能在文件的最開始,import前面,在后面的字符串不會打印),即文檔中的字符串。
② __file__為打印本文件的路徑。
③ __all__打印過濾變量、函數和類。
'''
import b1
print(__doc__)
print(__file__) # 打印本模塊的路徑
print(__all__)
print(b1.__doc__)
print(b1.__file__) # b1模塊的路徑
print(b1.__all__)
'''
4) __all__
① 因為模塊中可能包含大量的不需要的變量、函數和類,可以通過設置 __all__起到過濾變量、函數和類的作用,變量 __all__ 包含一個列表。
② 在以import * 方式導入時,會導入任意不以下劃線打頭的全局名詞,有 * 的時候才跟 __all__ 搭配使用, 通過__all__起到過濾。
③ 直接用import b1時,即導入b1模塊的時候,在b1模塊即使有__all__是沒有影響的,可以使用b1模塊中的任何變量、函數和類。
④ 模塊中不使用__all__屬性,則導入模塊內的所有共有屬性,方法和類。
'''
# 以下是b1文件里代碼
__all__ = ['b3','S','b4',b5] # 當用from b1 import * 只能用b3、b4和類S,可以需要過濾的b5,但是未賦值
b3 = 1
b4 = 2
clas S:
pass
def s():
pass
'''
'''
# 當前文件下代碼
from b1 import * # 導入b1模塊,用 * 使得調用 __all__
b4 = 5
print(b3) # 可以打印b3,為1
print(b4) # 這里打印b4,為5
k = S() # 可以類的實例化
s() # 無法調用函數s()
'''
5) if __name__ == '__main__':
① 當調入別的模塊時,通常在模塊中寫 if __name__ == '__main__': 這樣能避免調用其他模塊時,這些模塊中的函數運行了,但是 if __name__ == '__main__' 以外的函數、變量、類都會運行,相當于把這些抄到了文件的頭部,直接運行。
# 以下是b1.py模塊內容
print("寶貝入懷")
if __name__ == '__main__':
print("你好")
'''
import b1 # 導入b1模塊,會自動運行 if __name__ == '__main__'以外內容,就會打印print("寶貝入懷")
print(__name__) # 代碼在當前文件中跑,該模塊的文件名__name__不是文件名,而是__main__。
if __name__ == '__main__':
print(b1.__name__) # 導入另一個模塊的代碼,另一個模塊的文件名__name__是文件名b1。
'''
二、我的筆記
01 筆記--Python [ 整理完 ]
02 筆記--機器視覺 [ 整理完 ]
03 筆記--C++ [ 整理完 ]
04 筆記--爬蟲 [ 整理ing ]
三、Python 目錄
1) Python 編輯器
2) Python 基礎
03) Python 難點
04) Python 常用的庫
[Python系列 已完結]
( C++、機器視覺、爬蟲......系列筆記,見專欄 )
"?我的筆記,希望對你有幫助?"
總結
以上是生活随笔為你收集整理的python module是干什么的_如何最简单、通俗地理解Python的模块?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux查看CUDA和cuDNN版本
- 下一篇: python符号格式化设置区间_Pyth