1)程式入口
1.1、以c和c++為例,需要有乙個main函式來作為程式的入口,也就是程式的執行會從main函式開始。
1.2、而python屬於指令碼語言,不像編譯型語言那樣先將程式編譯成二進位制再執行,而是動態的逐行解釋執行。也就是從指令碼第一行開始執行,沒有統一的入口。
1.3、乙個 python 原始碼檔案除了可以被直接執行外,還可以作為模組(也就是庫)被匯入。不管是匯入還是直接執行,最頂層的**都會被執行(python 用縮進來區分**層次)。
1.4、if __name__ == '__main__' 就相當於是 python 模擬的程式入口。由於模組之間相互引用,不同模組可能都有這樣的定義,而入口程式只能有乙個。到底哪個入口程式被選中,這取決於 __name__ 的值。
2)__name__
2.1、__name__ 是內建變數,用於表示當前模組的名字,同時還能反映乙個包的結構。
2.2、如果乙個模組被直接執行,則其沒有包結構,其 __name__ 值為 __main__。
2.3、if __name__ == '__main__' 簡單的理解就是: 如果模組是被直接執行的,則**塊被執行,如果模組是被匯入的,則**塊不被執行。
3)__main__.py 檔案與 python -m
3.1、python 的 -m 引數用於將乙個模組或者包作為乙個指令碼執行,而 __main__.py 檔案則相當於是乙個包的」入口程式「。
3.2、總結:
1、 加上 -m 引數時會把當前工作目錄新增到 sys.path 中,而不加時則會把指令碼所在目錄新增到 sys.path 中。
2、 加上 -m 引數時 python 會先將模組或者包匯入,然後再執行
3、 __main__.py 檔案是乙個包或者目錄的入口程式。不管是用 python package 還是用 python -m package 執行時,__main__.py 檔案總是被執行。
python程式設計中的if name
在大多數編排得好一點的指令碼或者程式裡面都有這段if name main 雖然一直知道他的作用,但是一直比較模糊,收集資料詳細理解之後與打架分享。1 這段 的功能 乙個python的檔案有兩種使用的方法,第一是直接作為指令碼執行,第二是import到其他的python指令碼中被呼叫 模組重用 執行。...
python中的網路程式設計
python的網路程式設計基於socket 套接字 基本概念 socket通常也稱作 套接字 用於描述 ip位址和埠,是乙個通訊鏈的控制代碼,應用程式通常通過 套接字 向網路發出請求或者應答網路請求。socket起源於 unix 而unix linux 基本哲學之一就是 一切皆檔案 對於檔案用 開啟...
python程式設計中的if name
在大多數編排得好一點的指令碼或者程式裡面都有這段if name main 雖然一直知道他的作用,但是一直比較模糊,收集資料詳細理解之後與打架分享。1 這段 的功能 乙個python的檔案有兩種使用的方法,第一是直接作為指令碼執行,第二是import到其他的python指令碼中被呼叫 模組重用 執行。...