Python引用與目錄結構



哎。差點找不到之前寫的這篇筆記。

Python引用與目錄結構

模塊的概念

模塊即單個.py文件。
模塊名即文件名。

引用模塊:

  1. 只在第一次引用時執行、且執行一次。

  2. 引用及使用方法:

    # 僅引模塊
    import module
    m1.fun() ##使用其內變量/函數,必須使用"模塊名."。否則報錯
    
    # 引模塊的特定變量/函數
    from module import fun
    fun() ##不必使用"模塊名."
    

模塊也是對象,具有一個內置屬性__name__。該屬性有兩種取值:模塊名__main__

  • 舉例說明取值問題:當在A文件中引入B模塊,A文件的__name__取值為__main__,B模塊的__name__取值為模塊名

  • __name__的使用場景:在import模塊時,默認情況下,模塊的所有語句都會被執行一次。如果希望模塊中有某些語句,在import時避免執行,可以:

    if __name__ == 'main':
        ## 這里的語句將在import時避免執行
        ## 因為import時,條件為假
    

包的概念

包即一個文件夾。
包含了__init__.py和一系列.py文件。包名即文件夾名。

__init__.py是為了避免將文件夾名當作普通的字符串,其內容可以為空,一般用來進行包的某些初始化工作或者設置__all__,用以暴露該包的 API。

引用時搜索模塊的順序

  1. 當前文件所在目錄
  2. 環境變量PYTHONPATH(包含python帶的模塊、自己安裝的模塊),可以通過bash或sys.path修改

python工程常用目錄結構

  • 方式一

    -- src
        |-- mod1.py(被引用的模塊)
        `-- test1.py(主程序)
    

    test1.py中直接import mod1即可。

  • 方式二:

    -- src
        |-- mod1.py(被引用的模塊1)
        |-- pkg
        |	|-- __init__.py(必須有)
        |   `-- mod2.py(被引用的模塊2)
        `-- test1.py(主程序)
    

    test1.pyimport mod1

    test1.pyfrom pkg import mod2

  • 方式三:

    -- src
        |-- mod1.py
        |-- pkg
        |	|-- __init__.py(必須有)
        |   `-- mod2.py
        |-- sub
        |   `-- test2.py
        `-- test1.py
    

    test1.pyimport mod1

    test1.pyfrom pkg import mod2

    test2.py

    import sys
    sys.path.append("..") ## 臨時加入父目錄
    ## 然后就可以正常地:
    import mod1
    from pkg import mod2
    
    

    test1.pyfrom pkg import mod2

參考資料


免責聲明!

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



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