python中模塊和包的概念


1.模塊

一個.py文件就是一個模塊。這個文件的名字是:模塊名.py。由此可見在python中,文件名和模塊名的差別只是有沒有后綴。有后綴是文件名,沒有后綴是模塊名。

每個文件(每個模塊)都是一個獨立的名稱空間,也就是說可以在兩個(多個)文件中出現同名的函數。

import,from.....import...兩種導入的區別:

1.import

  按模塊區分擁有獨立的命名空間,要是想使用模塊中的函數需要使用      模塊名.函數名       的方式來使用。

  可以使用import.....as....為導入的模塊起一個別名,在使用這個模塊中的函數時,可以使用     別名.函數名。

2.from.....import...

  將模塊的內容導入到當前的命名空間中,直接使用名字就行。

  如果,被導入的模塊和當前的文件中有同名的函數,那么后者將會覆蓋前者。

  什么意思呢?

    這個時候就要看from.....import...  (from后面跟的是模塊名,import后面跟的是具體的函數名,或是模塊中具體的變量名等)出現的位置了,如果出現在當前模塊函數之前,那么當前模塊的函數會覆蓋導入的函數,如果出現在當前函數定義之后,那么導入的函數會覆蓋當前模塊中的函數。

    from.....import......可以接受as為導入的函數或是變量起別名,同樣可以導入多個函數、變量等。

    from......import * 不建議使用這個方式導入模塊,可能覆蓋之前同名的函數等(這種方式不會導入以_開頭的變量或函數)。

3.共同點

  python中不支持重新加載或卸載之前的導入的模塊,因此如果修改被導入的模塊,需重新啟動python程序或者是使用重新加載語句來實現   import importlib; importlib.reload(modulename)  。

  當一個模塊被導入時,他的全局變量名__name__ 為模塊名,當這個模塊當做腳本執行時,全局變量名__name__為 __main__。

  模塊的查找順序:內存中已經加載的模塊->內置模塊->sys.path路徑中包含的模塊。(所以我們自己開發模塊時,注意不要和已有的模塊名重復)

2.包

包的本質就是一個包含__init__.py文件的目錄。是一種通過使用‘.模塊名’來組織python模塊名稱空間的方式,也就是說在在導入包時遇到帶 點 的,這就是關於包的導入語法。

導入包,本質上是導入了包中的__init__.py文件。

包的導入形式也有,import 和 from.....import......兩種形式。

3.提示

   import * 會導入除了以 _ 開頭的所有變量,但是如果定義了 __all__,那么會導入 __all__ 中列出的東西。

   __all__是模塊中的全局變量,列表

 

參考:https://www.cnblogs.com/bandaobudaoweng/p/10800864.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM