首頁 > 軟體

學習Python,你還不知道main函數嗎

2022-09-20 22:02:21

Python 中的 main 函數充當程式的執行點,在 Python 程式設計中定義 main 函數是啟動程式執行的必要條件,不過它僅在程式直接執行時才執行,而在作為模組匯入時不會執行。

要了解有關 Python main 函數的更多資訊,我們將從如下幾點逐步學習:

  • 什麼是 Python 函數
  • Python 中 main 函數的功能是什麼
  • 一個基本的 Python main() 是怎樣的
  • Python 執行模式

Let’s get started

什麼是 Python 函數

相信很多小夥伴對函數都不陌生了,函數是可複用的程式碼塊,它構成了在程式語言中執行操作的基礎,它們被用來對輸入資料執行計算並將輸出呈現給終端使用者。

我們已經瞭解到,函數是為執行特定任務而編寫的一段程式碼。Python中的函數分為三種型別,即內建函數、使用者定義函數和匿名函數。同時我們需要明確,main 函數與 Python 中的任何其他函數都是一樣的,沒有區別。

那麼讓我們來了解一下 Python 中的 main 函數到底是什麼。

Python 中的 main 函數是什麼

在大多數程式語言中,都有一個特殊的函數,每次程式執行時都會自動執行,這就是是 main 函數,或通常表示的 main(),它本質上是程式執行的起點。

在 Python 中,不必每次編寫程式時都定義 main 函數,這是因為除非定義了特定函數,否則 Python 直譯器都會從檔案頂部執行。因此,為 Python 程式的執行定義一個起點有助於更好地理解程式的工作原理。

一個基本的 Python main()

在大多數 Python 程式/指令碼中,我們可能會看到一個函數定義,然後是一個條件語句,如下所示:

def main():
    print("Hello, World!")
    
    
if __name__== "__main__" :
    main()

main 函數對於 Python 來說是必須的嗎

在 Python 中擁有 main 函數並不是強制性的,但是,在上面的範例中,我們可以看到,定義了一個名為 main() 的函數,下面是一個條件 if 語句,它檢查 __name__ 的值,並將其與字串 __main__ 進行比較,當為 True 時,就會執行 main()

在執行時,會列印“Hello, World!”。

當我們處理要作為 Python 指令碼執行或要在其他模組中匯入的檔案時,這種程式碼模式是非常常見的。

讓我們詳細來看一下這段程式碼是如何執行的,首先我們非常有必要了解 Python 直譯器設定 __name__ 取決於程式碼的執行方式。那麼,讓我們瞭解一下 Python 中的執行模式

Python 執行模式

有兩種主要方法可以告訴 Python 直譯器執行程式碼:

  • 最常見的方法是將檔案作為 Python 指令碼執行
  • 通過將必要的程式碼從一個 Python 檔案匯入到另一個檔案

無論我們選擇哪種執行模式,Python 都會定義一個名為 __name__ 的特殊變數,其中包含一個字串。正如我們前面所看到的,這個字串的值取決於程式碼的執行方式。

有時當我們從模組匯入時,我們想知道特定模組的函數是否被用作匯入,或者只是使用該模組的原始 .py(Python 指令碼)檔案。

為了解決這個問題,Python 有一個特殊的內建變數,稱為 __name__,可以根據執行或執行指令碼的方式,此變數會被分配字串 __main__

Python 中的 __main__ 是什麼

Python main 函數是任何 Python 程式的入口。當我們執行程式時,直譯器按順序執行程式碼,如果作為模組匯入,則不會執行 main 函數,main 函數只有在作為 Python 程式執行時才會執行。

因此如果我們直接執行指令碼,Python 會將 __main__ 分配給 __name__,即 __name__=“__main__”

因此,如果條件語句的計算結果為 True,則意味著 .py(Python 指令碼)檔案正在直接執行或執行。

有一點需要重點注意,如果我們直接在 Python shell 或終端上執行某些東西,則預設情況下,此條件語句恰好為 True。

最終我們習慣性的把所有必要的函數定義都寫在了程式碼檔案的最上面,最後在檔案的最後寫了這條語句,來組織程式碼。

if __name__ == "__main__" :
        Logic Statements

簡而言之,__name__ 變數可以幫助我們檢查檔案是直接執行還是已匯入。

在編寫具有 main 功能的程式時,我們需要記住如下一些事情

儘可能使用函數和類

長期以來,我們一直在學習物件導向程式設計的概念及其優勢,所以絕對有必要將批次邏輯程式碼放在緊湊的函數或類中。通過這種方式,我們可以控制程式碼的執行,而不是讓 Python 直譯器一匯入模組就執行它。

讓我們看看下面的一段程式碼:

def get_got():
    print("…Fetching GOT Data… n")
    data="Bran Stark wins the Iron Throne. n"
    print("…GOT Data has been fetched…n")
    return data
 
print("n Demo: Using Functions n")
got=get_got()
print(got)

在上面的範例中,我定義了一個名為 get_got 的函數,它返回儲存在變數 data 中的字串。然後將其儲存在名為 got 的變數中,最後列印該變數。

輸出如下:

使用 __name__ 來控制程式碼的執行

現在我們知道了什麼是 __name__ 變數,那麼該如何以及為什麼使用它。讓我們看看下面的程式碼片段:

if __name__ == "__main__":
      got = "Game of Thrones is a legendary shown"
      print(got)
      new_got = str.split(got)
      print(new_got)

在上面的範例中,條件 if 語句將比較變數 __name__ 的值與字串 __main__。當且僅當它的計算結果為 True 時,才會執行下一組邏輯語句。由於我們直接執行程式,我們知道條件語句將是 True。因此語句被執行,我們得到了想要的輸出。這樣我們就可以使用 __name__ 變數來控制我們程式碼的執行。

輸出如下:

建立一個包含要執行程式碼的函數 main()

到目前為止,我們已經瞭解了 Python 程式碼的各種執行方式,同時我們還知道為什麼以及何時使用 main() 函數,下面就來應用它。看下面這段程式碼:

print("n Main Function Demo n")
def demo(got):
    print("…Beginning Game Of Thrones…n")
    new_got = str.split(got)
    print("…Game of Thrones has finished…n")
    return new_got
    
def main():
    got= "n Bran Stark wins the Iron Throne n"
    print(got)
    new_got = demo(got)
    print(new_got)
if __name__ == "__main__":
    main()

在上面的例子中,我們使用了 main() 的定義,它包含了我們要執行的程式邏輯。我們還定義了一個名為 demo 的函數,包含一段程式碼,可以在必要時複用。此外我們還更改了條件塊,使其執行 main()

這樣,我們將要執行的程式碼放在 main() 中,將程式設計邏輯放在一個名為 demo 的函數中,並在條件塊中呼叫 main()

來看一下輸出:

可以嘗試一下,如果將此程式碼作為指令碼執行或匯入它,則輸出將是相同的

從 main() 呼叫其他函數

當我們編寫成熟的 Python 程式時,可能有許多可以呼叫和使用的函數。通常情況下,一些函數應該在程式開始執行時立即呼叫。因此,從 main() 本身呼叫其他函數就是最佳的選擇了。

讓我們看看下面的程式碼片段:

print("n Main Function Demo n")
def demo(got):
    print("…Beginning Game Of Thrones Demo1…n")
    new_got = str.split(got)
    print("…Game of Thrones has finished…n")
    return new_got
def getgot():
    print("…Getting GOT Data…n")
    got="Bran Stark wins the Iron Throne n"
    print("…GOT Data has been returned…n")
    return got
def main():
    got= getgot()
    print(got)
    new_got = demo(got)
    print(new_got)
if __name__ == "__main__":
    main()

在上面的範例中,我們定義了一個名為 getgot() 的函數來獲取資料,這個函數是從 main() 本身呼叫的。

因此,從 main() 中呼叫其他函數以將整個任務從可以獨立執行的較小子任務中組合起來總是較好的選擇。

輸出如下:

通過這篇文章,對於 Python 中 main() 函數的全部內容以及如何使用它有一個全面而正確的理解。藉助 Python 中的 main() 函數,我們可以在需要時執行大量功能,還可以控制執行流程。

以上就是學習Python,你還不知道main函數嗎的詳細內容,更多關於Python main函數的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com