欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

學(xué)習(xí)Python,你還不知道m(xù)ain函數(shù)嗎

 更新時(shí)間:2022年09月20日 09:12:02   作者:蘿卜大雜燴  
Python?中的?main?函數(shù)充當(dāng)程序的執(zhí)行點(diǎn),在?Python?編程中定義?main?函數(shù)是啟動程序執(zhí)行的必要條件。本文就來帶大家深入了解一下main函數(shù),感興趣的可以了解一下

Python 中的 main 函數(shù)充當(dāng)程序的執(zhí)行點(diǎn),在 Python 編程中定義 main 函數(shù)是啟動程序執(zhí)行的必要條件,不過它僅在程序直接運(yùn)行時(shí)才執(zhí)行,而在作為模塊導(dǎo)入時(shí)不會執(zhí)行。

要了解有關(guān) Python main 函數(shù)的更多信息,我們將從如下幾點(diǎn)逐步學(xué)習(xí):

  • 什么是 Python 函數(shù)
  • Python 中 main 函數(shù)的功能是什么
  • 一個(gè)基本的 Python main() 是怎樣的
  • Python 執(zhí)行模式

Let’s get started

什么是 Python 函數(shù)

相信很多小伙伴對函數(shù)都不陌生了,函數(shù)是可復(fù)用的代碼塊,它構(gòu)成了在編程語言中執(zhí)行操作的基礎(chǔ),它們被用來對輸入數(shù)據(jù)執(zhí)行計(jì)算并將輸出呈現(xiàn)給最終用戶。

我們已經(jīng)了解到,函數(shù)是為執(zhí)行特定任務(wù)而編寫的一段代碼。Python中的函數(shù)分為三種類型,即內(nèi)置函數(shù)、用戶定義函數(shù)和匿名函數(shù)。同時(shí)我們需要明確,main 函數(shù)與 Python 中的任何其他函數(shù)都是一樣的,沒有區(qū)別。

那么讓我們來了解一下 Python 中的 main 函數(shù)到底是什么。

Python 中的 main 函數(shù)是什么

在大多數(shù)編程語言中,都有一個(gè)特殊的函數(shù),每次程序運(yùn)行時(shí)都會自動執(zhí)行,這就是是 main 函數(shù),或通常表示的 main(),它本質(zhì)上是程序執(zhí)行的起點(diǎn)。

在 Python 中,不必每次編寫程序時(shí)都定義 main 函數(shù),這是因?yàn)槌嵌x了特定函數(shù),否則 Python 解釋器都會從文件頂部執(zhí)行。因此,為 Python 程序的執(zhí)行定義一個(gè)起點(diǎn)有助于更好地理解程序的工作原理。

一個(gè)基本的 Python main()

在大多數(shù) Python 程序/腳本中,我們可能會看到一個(gè)函數(shù)定義,然后是一個(gè)條件語句,如下所示:

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

main 函數(shù)對于 Python 來說是必須的嗎

在 Python 中擁有 main 函數(shù)并不是強(qiáng)制性的,但是,在上面的示例中,我們可以看到,定義了一個(gè)名為 main() 的函數(shù),下面是一個(gè)條件 if 語句,它檢查 __name__ 的值,并將其與字符串 __main__ 進(jìn)行比較,當(dāng)為 True 時(shí),就會執(zhí)行 main()。

在執(zhí)行時(shí),會打印“Hello, World!”。

當(dāng)我們處理要作為 Python 腳本執(zhí)行或要在其他模塊中導(dǎo)入的文件時(shí),這種代碼模式是非常常見的。

讓我們詳細(xì)來看一下這段代碼是如何執(zhí)行的,首先我們非常有必要了解 Python 解釋器設(shè)置 __name__ 取決于代碼的執(zhí)行方式。那么,讓我們了解一下 Python 中的執(zhí)行模式

Python 執(zhí)行模式

有兩種主要方法可以告訴 Python 解釋器執(zhí)行代碼:

  • 最常見的方法是將文件作為 Python 腳本執(zhí)行
  • 通過將必要的代碼從一個(gè) Python 文件導(dǎo)入到另一個(gè)文件

無論我們選擇哪種執(zhí)行模式,Python 都會定義一個(gè)名為 __name__ 的特殊變量,其中包含一個(gè)字符串。正如我們前面所看到的,這個(gè)字符串的值取決于代碼的執(zhí)行方式。

有時(shí)當(dāng)我們從模塊導(dǎo)入時(shí),我們想知道特定模塊的函數(shù)是否被用作導(dǎo)入,或者只是使用該模塊的原始 .py(Python 腳本)文件。

為了解決這個(gè)問題,Python 有一個(gè)特殊的內(nèi)置變量,稱為 __name__,可以根據(jù)運(yùn)行或執(zhí)行腳本的方式,此變量會被分配字符串 __main__。

Python 中的 __main__ 是什么

Python main 函數(shù)是任何 Python 程序的入口。當(dāng)我們運(yùn)行程序時(shí),解釋器按順序運(yùn)行代碼,如果作為模塊導(dǎo)入,則不會運(yùn)行 main 函數(shù),main 函數(shù)只有在作為 Python 程序運(yùn)行時(shí)才會執(zhí)行。

因此如果我們直接運(yùn)行腳本,Python 會將 __main__ 分配給 __name__,即 __name__=“__main__”。

因此,如果條件語句的計(jì)算結(jié)果為 True,則意味著 .py(Python 腳本)文件正在直接運(yùn)行或執(zhí)行。

有一點(diǎn)需要重點(diǎn)注意,如果我們直接在 Python shell 或終端上運(yùn)行某些東西,則默認(rèn)情況下,此條件語句恰好為 True。

最終我們習(xí)慣性的把所有必要的函數(shù)定義都寫在了代碼文件的最上面,最后在文件的最后寫了這條語句,來組織代碼。

if?__name__?==?"__main__"?:
????????Logic?Statements

簡而言之,__name__ 變量可以幫助我們檢查文件是直接運(yùn)行還是已導(dǎo)入。

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

盡可能使用函數(shù)和類

長期以來,我們一直在學(xué)習(xí)面向?qū)ο缶幊痰母拍罴捌鋬?yōu)勢,所以絕對有必要將批量邏輯代碼放在緊湊的函數(shù)或類中。通過這種方式,我們可以控制代碼的執(zhí)行,而不是讓 Python 解釋器一導(dǎo)入模塊就執(zhí)行它。

讓我們看看下面的一段代碼:

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)

在上面的示例中,我定義了一個(gè)名為 get_got 的函數(shù),它返回存儲在變量 data 中的字符串。然后將其存儲在名為 got 的變量中,最后打印該變量。

輸出如下:

使用 __name__ 來控制代碼的執(zhí)行

現(xiàn)在我們知道了什么是 __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__。當(dāng)且僅當(dāng)它的計(jì)算結(jié)果為 True 時(shí),才會執(zhí)行下一組邏輯語句。由于我們直接運(yùn)行程序,我們知道條件語句將是 True。因此語句被執(zhí)行,我們得到了想要的輸出。這樣我們就可以使用 __name__ 變量來控制我們代碼的執(zhí)行。

輸出如下:

創(chuàng)建一個(gè)包含要運(yùn)行代碼的函數(shù) main()

到目前為止,我們已經(jīng)了解了 Python 代碼的各種執(zhí)行方式,同時(shí)我們還知道為什么以及何時(shí)使用 main() 函數(shù),下面就來應(yīng)用它??聪旅孢@段代碼:

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() 的定義,它包含了我們要運(yùn)行的程序邏輯。我們還定義了一個(gè)名為 demo 的函數(shù),包含一段代碼,可以在必要時(shí)復(fù)用。此外我們還更改了條件塊,使其執(zhí)行 main()。

這樣,我們將要運(yùn)行的代碼放在 main() 中,將編程邏輯放在一個(gè)名為 demo 的函數(shù)中,并在條件塊中調(diào)用 main()。

來看一下輸出:

可以嘗試一下,如果將此代碼作為腳本運(yùn)行或?qū)胨瑒t輸出將是相同的

從 main() 調(diào)用其他函數(shù)

當(dāng)我們編寫成熟的 Python 程序時(shí),可能有許多可以調(diào)用和使用的函數(shù)。通常情況下,一些函數(shù)應(yīng)該在程序開始執(zhí)行時(shí)立即調(diào)用。因此,從 main() 本身調(diào)用其他函數(shù)就是最佳的選擇了。

讓我們看看下面的代碼片段:

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()

在上面的示例中,我們定義了一個(gè)名為 getgot() 的函數(shù)來獲取數(shù)據(jù),這個(gè)函數(shù)是從 main() 本身調(diào)用的。

因此,從 main() 中調(diào)用其他函數(shù)以將整個(gè)任務(wù)從可以獨(dú)立執(zhí)行的較小子任務(wù)中組合起來總是較好的選擇。

輸出如下:

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

以上就是學(xué)習(xí)Python,你還不知道m(xù)ain函數(shù)嗎的詳細(xì)內(nèi)容,更多關(guān)于Python main函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python使用tkinter實(shí)現(xiàn)屏幕中間倒計(jì)時(shí)

    python使用tkinter實(shí)現(xiàn)屏幕中間倒計(jì)時(shí)

    這篇文章主要為大家詳細(xì)介紹了python使用tkinter實(shí)現(xiàn)屏幕中間倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Python入門教程(四十)Python的NumPy數(shù)組創(chuàng)建

    Python入門教程(四十)Python的NumPy數(shù)組創(chuàng)建

    這篇文章主要介紹了Python入門教程(四十)Python的NumPy數(shù)組創(chuàng)建,NumPy 用于處理數(shù)組,NumPy 中的數(shù)組對象稱為 ndarray,我們可以使用 array() 函數(shù)創(chuàng)建一個(gè) NumPy ndarray 對象,需要的朋友可以參考下
    2023-05-05
  • python批量爬取下載抖音視頻

    python批量爬取下載抖音視頻

    這篇文章主要為大家詳細(xì)介紹了python批量爬取下載抖音視頻,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python數(shù)據(jù)處理篇之Sympy系列(五)---解方程

    Python數(shù)據(jù)處理篇之Sympy系列(五)---解方程

    這篇文章主要介紹了Python數(shù)據(jù)處理篇之Sympy系列(五)---解方程,非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python3基礎(chǔ)之函數(shù)用法

    Python3基礎(chǔ)之函數(shù)用法

    這篇文章主要介紹了Python3的函數(shù)用法,非常重要,需要的朋友可以參考下
    2014-08-08
  • Python讀寫Excel文件庫的實(shí)現(xiàn)示例

    Python讀寫Excel文件庫的實(shí)現(xiàn)示例

    本文主要介紹了Python讀寫Excel文件庫的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 一步步解析Python斗牛游戲的概率

    一步步解析Python斗牛游戲的概率

    這篇文章主要帶著大家一步步解析Python斗牛游戲的概率,計(jì)算出斗牛游戲的概率,感興趣的朋友可以參考一下
    2016-02-02
  • 手把手教你搭建python+selenium自動化環(huán)境(圖文)

    手把手教你搭建python+selenium自動化環(huán)境(圖文)

    本文主要介紹了手把手教你搭建python+selenium自動化環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • python實(shí)現(xiàn)bucket排序算法實(shí)例分析

    python實(shí)現(xiàn)bucket排序算法實(shí)例分析

    這篇文章主要介紹了python實(shí)現(xiàn)bucket排序算法,實(shí)例分析了Python排序的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • 關(guān)于matplotlib及相關(guān)cmap參數(shù)的取值方式

    關(guān)于matplotlib及相關(guān)cmap參數(shù)的取值方式

    這篇文章主要介紹了關(guān)于matplotlib及相關(guān)cmap參數(shù)的取值方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論