在本教程中,我們將學習 Python 編程語言中的 main() 函數。我們還將了解如何在 Python 程序中利用 __name__ 屬性,以便在各種上下文中動態執行它。
讓我們從了解 Python 中的 main() 函數開始。
理解 Python 中的 main() 函數
main() 被認為是多種編程語言的獨特函數,也稱為程序文件的執行點。但是,Python 編程語言的解釋器從文件頂部開始執行每一行 serial-wise,並且沒有顯式的 main() 函數。
Python 提供了其他約定來定義執行點。其中之一是利用 main() 函數以及 python 文件的 __name__ 屬性。
現在,讓我們了解 Python 編程語言中的 __name__ 屬性。
理解 Python 中的 __name__ 屬性
__name__ 屬性是 Python 中唯一的核心變量,用於顯示當前模塊的名稱。
此屬性根據我們運行 Python 文件的位置提供不同的值。讓我們考慮一個例子來更好地理解 __name__ 屬性。
將 Python 文件作為腳本執行
讓我們考慮一下我們有一個名為 myworld.py 的 Python 文件,其中包含以下內容:
文件:myworld.py
print(__name__)
輸出:
$ python myworld.py __main__
說明:
在上麵的程序文件中,我們打印了 __name__ 屬性的值。因此,__name__ 變量的值被設置為 __main__。
將 Python 文件作為模塊執行
我們還可以將 Python 文件作為模塊執行。為了執行此操作,我們需要將所需文件導入另一個 Python 程序。讓我們考慮以下示例以正確理解該概念。
假設我們在與 myworld.py 文件相同的目錄中創建了一個 Python 文件 python_main.py,其內容如下:
文件:python_main.py
import myworld
輸出:
$ python python_main.py myworld
說明:
在上麵的程序文件中,我們導入了一個模塊作為 myworld.m 。結果,當我們執行 python_main.py 文件時,程序運行了模塊文件中的完整代碼。但是,我們可以觀察到顯示模塊名稱為 myworld 而不是顯示 __main__。
發生這種情況是因為,在將 Python 文件作為模塊執行的上下文中,模塊名稱本身被分配給 __name__ 變量。
將 if 語句與 __name__ 變量一起使用
由於我們已經正確理解了 __name__ 屬性是如何賦值的,我們可以利用 if 語句在不同的上下文中以不同的方式運行相同的 Python 文件。
讓我們考慮以下示例,其中更改了 myworld.py 文件的內容。
文件:myworld.py
def main():
print("This is my Python program.")
if __name__ == "__main__":
main()
輸出:
$ python myworld.py This is my Python program.
說明:
在上麵的代碼片段中,我們定義了一個函數 main() 來為用戶打印一些字符串。然後我們使用 if 條件子句來檢查 __name__ 變量的值是否等於 __main__,然後 main() 函數將執行。結果,當我們執行 myworld.py 文件時,會為用戶打印字符串消息。
但是,當我們通過將文件導入 python_main.py 將文件作為模塊執行時,由於未調用 main() 函數,程序不返回任何輸出。
因此,我們可以得出結論,我們在 myworld.py 文件中定義的自定義 main() 函數隻能作為獨立腳本執行,而不能作為導入模塊執行。
這是在 Python 中顯式定義 main() 函數的標準方法。它是 Python 文件的 __name__ 屬性最流行的用例之一。
相關用法
- Python matplotlib.patches.Rectangle用法及代碼示例
- Python matplotlib.pyplot.step()用法及代碼示例
- Python math.cos()用法及代碼示例
- Python math.cosh()用法及代碼示例
- Python math.acosh()用法及代碼示例
- Python matplotlib.axes.Axes.pie()用法及代碼示例
- Python map()用法及代碼示例
- Python math.fmod()用法及代碼示例
- Python math.fsum()用法及代碼示例
- Python matplotlib.pyplot.semilogy()用法及代碼示例
- Python math.remainder()用法及代碼示例
- Python math.asinh()用法及代碼示例
- Python matplotlib.pyplot.inferno()用法及代碼示例
- Python matplotlib.axes.Axes.semilogx()用法及代碼示例
- Python Tkinter maxsize()用法及代碼示例
- Python math.atanh()用法及代碼示例
- Python math.fabs()用法及代碼示例
- Python math.log1p()用法及代碼示例
- Python matplotlib.axes.Axes.vlines()用法及代碼示例
- Python math.gcd()用法及代碼示例
注:本文由純淨天空篩選整理自 Python main() function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。