1. 程式人生 > >python:模組(檔案操作)

python:模組(檔案操作)

1.模組

1.1模組的概念

模組是python程式架構的一個核心概念

  • 每一個以副檔名 py 結尾的python原始碼檔案都是一個模組
  • 模組名 同樣也是一個識別符號,需要符合識別符號的命名規則
  • 在模組中定義的全域性變數,函式,類都是提供給外界直接使用的工具
  • 模組 就好比是工具包,要想使用這個工具包中的工具,就需要先匯入這個模組

1.2模組的兩種匯入方式

1)import 匯入

   import   模組名1,模組名2

提示:在匯入模組時,每個匯入應該獨佔一行

2)import  模組名1

   import   模組名2

匯入之後,通過 模組名.使用模組提供的工具-------全域性變數,函式,類

1.3使用as指定模組的別名:

      如果模組的名字太長,可以使用as指定模組的名稱,以方便在程式碼中使用

      import 模組名 as 模組別名

注意:模組別名應該符合大駝峰命名法

1.4 from ...import匯入

 如果希望從某一個模組中匯入部分工具,就可以使用from ......import的方式:from 模組名 import 工具名

import 模組名是一次性把模組中所有工具全部匯入,並且通過  模組名/別名 訪問

匯入之後:

        不需要通過  模組名.

        可以直接使用模組提供的工具   -------全域性變數,函式,類

注意:

             如果兩個模組存在同名的函式,那麼後匯入模組的函式會覆蓋掉先匯入的函式

 

             開發時import 程式碼應該統一寫在程式碼的頂部,更容易及時發現衝突

            一旦發現衝突,可以使用as 關鍵字給其中一個工具起 一個別名

1.5  from ...import *   匯入所有模組

這種方式不推薦使用,因為函式重名並沒有任何提示,出現問題不好排查

2.模組的搜尋順序(擴充套件)

python直譯器在匯入模組時,如果如有同目錄下有就直接匯入,如果沒有,在搜素系統目錄

import random
rand=random.randint(0,10)
print(rand)

注意:如果當前目錄下,存在random.py的檔案,程式就無法正常執行了!這個時候,Python的直譯器會載入當前目錄下的random.py,而不會載入系統的random模組

在開發時,給檔名不要和系統的模組檔案重名

python中每一個模組都有一個內建屬性__file__可以檢視模組的完整路徑

3.原則    ---每一個檔案都應該是可以被匯入的

      一個獨立的Python 檔案就是一個模組

      再匯入檔案時,檔案中所有沒有任何被縮排的程式碼都會被執行一遍

      實際開發中,每一個模組都是獨立開發的,大多都由專人負責,開發人員通常會在模組下方增加一些測試程式碼,且僅在模組內使用,而被匯入到其他檔案中不需要執行

__name__   屬性:

       __name__ 屬性可以做到測試模組的程式碼,只在測試情況下被執行,而在被匯入是不會被執行

       __name__是python的一個內建屬性,記錄著一個字串

     如果是被其他檔案匯入的,__name__就是模組名,如果是當前執行的程式,__name__是__main__

def funn():
    print("play hahha")
    
#    如果直接執行模組,列印__main__但是加上__name__表明是測試程式碼,將該某塊匯入其他某塊時,不會被執行
if __name__ =="__main__":
    
     print(__name__)
     print("測試模組")
     funn()

在很多python檔案中都會看到以下格式的程式碼:

#匯入模組
#定義全域性變數
#定義類
#定義函式
#
#在程式碼的下方:
def main():
    #測試程式碼
    pass
#根據__name__判斷是否執行下方程式碼
if __name__ =="main":
    main()