搜尋
首頁後端開發Python教學學Python,還不知道main函數嗎

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 的变量中,最后打印该变量。

输出如下:

學Python,還不知道main函數嗎

使用 __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__ 变量来控制我们代码的执行。

输出如下:

學Python,還不知道main函數嗎

创建一个包含要运行代码的函数 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()。

来看一下输出:

學Python,還不知道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函數嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
Python的科學計算中如何使用陣列?Python的科學計算中如何使用陣列?Apr 25, 2025 am 12:28 AM

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

您如何處理同一系統上的不同Python版本?您如何處理同一系統上的不同Python版本?Apr 25, 2025 am 12:24 AM

你可以通過使用pyenv、venv和Anaconda來管理不同的Python版本。 1)使用pyenv管理多個Python版本:安裝pyenv,設置全局和本地版本。 2)使用venv創建虛擬環境以隔離項目依賴。 3)使用Anaconda管理數據科學項目中的Python版本。 4)保留系統Python用於系統級任務。通過這些工具和策略,你可以有效地管理不同版本的Python,確保項目順利運行。

與標準Python陣列相比,使用Numpy數組的一些優點是什麼?與標準Python陣列相比,使用Numpy數組的一些優點是什麼?Apr 25, 2025 am 12:21 AM

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基於基於duetoc的iMplation,2)2)他們的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函數函數函數函數構成和穩定性構成和穩定性的操作,製造

陣列的同質性質如何影響性能?陣列的同質性質如何影響性能?Apr 25, 2025 am 12:13 AM

數組的同質性對性能的影響是雙重的:1)同質性允許編譯器優化內存訪問,提高性能;2)但限制了類型多樣性,可能導致效率低下。總之,選擇合適的數據結構至關重要。

編寫可執行python腳本的最佳實踐是什麼?編寫可執行python腳本的最佳實踐是什麼?Apr 25, 2025 am 12:11 AM

到CraftCraftExecutablePythcripts,lollow TheSebestPractices:1)Addashebangline(#!/usr/usr/bin/envpython3)tomakethescriptexecutable.2)setpermissionswithchmodwithchmod xyour_script.3)

Numpy數組與使用數組模塊創建的數組有何不同?Numpy數組與使用數組模塊創建的數組有何不同?Apr 24, 2025 pm 03:53 PM

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,內存效率段

Numpy數組的使用與使用Python中的數組模塊陣列相比如何?Numpy數組的使用與使用Python中的數組模塊陣列相比如何?Apr 24, 2025 pm 03:49 PM

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

CTYPES模塊與Python中的數組有何關係?CTYPES模塊與Python中的數組有何關係?Apr 24, 2025 pm 03:45 PM

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器