python中的__init__.py檔案和導包總結

JxBetter發表於2019-02-16

python __init__.py檔案和導包總結

import也是一門學問~

  1. 匯入方式

    import
    from xxx import yyy

  2. __init__.py的作用

    把某一個目錄變成一個包,
    使得其他模組使用 包.包中的某一模組/函式/變數/類 這種方式時可用

  3. __init__.py什麼時候有用?

    如果某一個目錄在後期匯入使用時只是作為中間目錄銜接使用,則可以不加__init__.py

    如果某個目錄後期會被直接或間接顯示地作為一個包匯入並被使用,那麼必須必須必須要加__init__.py,並且__init__.py中的內容會影響匯入的內容

  4. 每一個目錄都是可以被import的

    如果一個目錄下沒有__init__.py,那麼在import這個目錄時,並不會報錯,只會以這個目錄名建立一個namespace,裡面什麼都沒有,沒有使用價值 module `name` (namespace)

    然而當目錄下建立__init__.py後這個目錄就可以成為一個包 module `name` from `/Users/miechongdaxia/測試/test/name/__init__.py`

  5. 在pycharm下都以絕對路徑來引用包或者模組

    不要用 . 操作符,尤其是用from import這種方式,import一般直接匯入外層目錄作為包,而from import會匯入內層目錄中的包或者模組

  6. python查詢模組/包的路徑

    sys.path的值就是路徑

  7. 哪些東西可以被直接import?

    1. 模組檔案(.py檔案)
    2. C或C++擴充套件(已編譯為共享庫或DLL檔案)
    3. 目錄/包(包含多個模組,不一定要有__init__.py,具體差別看第四點)
    4. 內建模組(使用C編寫並已連結到Python直譯器中)
  8. 兩種匯入方式的區別

    from import 可以匯入模組中的函式/變數/類等
    import則不行,匯入的不是模組就是包目錄,無法細化到函式/變數/類等

  9. 如果一個目錄需要作為一個包使用,一定要在目錄下建立__init__.py,並且在裡面寫好可以匯入的模組,不然包目錄可以匯入,但是無法使用!!!!!

相關文章