Python __name__ == ‘__main__’詳細解釋-Python零基礎入門教程
目錄
零基礎 Python 學習路線推薦 : Python 學習目錄 >> Python 基礎入門
學習過 C 語言或者 Java 語言的盆友應該都知道程式執行必然有主程式入口 main 函式,而 Python 卻不同,即便沒有主程式入口,程式一樣可以自上而下對程式碼塊依次執行,然後 Python 不少開源專案或者模組中依然存在 __name__ == “__main__” 這種寫法,具體是上面意思呢?
一.簡介
1.__name__
** __name__** 是 Python 的內建屬性,是系統全域性變數!每一個 py 檔案都有一個屬於自己的__name__:
** 如果 py 檔案作為模組被匯入(import),那麼 __name__ 就是該 py 檔案的檔名(也稱 模組名);**
** 如果 py 檔案直接執行時(Ctrl+Shift+F10),那麼 __name__ 預設等於字串”__main__”;**
舉個簡單的例子:假如你名字是張三
在朋友眼中,你是張三
(__name__ == '張三')
;在你自己眼中,你是你自己
(__name__ == '__main__')
2.’__main__’
‘_ _main_ _’ 實際上就是一個
3.__name__ == ‘__main__‘****
當 .py 檔案被直接執行 (Ctrl+Shift+F10) 時,** if __name__ == ‘__main__’ 之下的程式碼塊將被執行,該語句就相當與 Python 的 main 主函式入口**,示例程式碼如下:
a.新建一個 my_name.py 檔案,作為模組檔案:
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說程式設計 @Blog(個人部落格地址): www.codersrc.com @File:Python __name__ == ‘__main__’.py @Time:2021/04/24 08:00 @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累! """ # 定義一個函式並列印 __name__ def prit_name(): print("my_name.py __name__:", __name__) if __name__ == "__main__": prit_name()
b.新建一個 python_main.py 檔案,作為啟動檔案 (Ctrl+Shift+F10):
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說程式設計
@Blog(個人部落格地址): www.codersrc.com
@File:Python __name__ == ‘__main__’.py
@Time:2021/04/24 08:00
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
# 匯入 my_name 模組
import my_name
# 定義一個函式並列印 __name__
def prit_name():
my_name.prit_name()
print("python_main.py __name__:", __name__)
if __name__ == "__main__":
prit_name()
'''
輸出結果:
my_name.py __name__: my_name
python_main.py __name__: __main__
'''
**由此可見,作為啟動檔案 python_main.py ,該檔案的內建屬性 __name** 等於 ‘__main__’,而 my_name.py 作為匯入模組,該模組的 __name** 等於檔名(也稱模組名字),所以 my_name.py 中的 表示式 if __name__ == ‘__main__’ 並不成立!**
當直接將 my_name.py 作為啟動檔案時 (Ctrl+Shift+F10),輸出:
my_name.py __name__: __main__
總結
如果 py 檔案作為模組被匯入(import),那麼 __name__ 就是該 py 檔案的檔名(也稱 模組名);
如果 py 檔案直接執行時(Ctrl+Shift+F10),那麼 __name__ 預設等於字串 ‘__main__‘** ;**
二.作用
1.__name__ == ‘__main__‘ 作為啟動 py 檔案的 main 函式入口;
2.一個專案中必然會包含多個模組檔案,每個模組檔案在自己寫完程式碼之後會做一些簡單的測試用於檢測 bug 或者 對自己的函式呼叫寫一個簡單的示例,而恰到好處的是:__name__ == ‘__main__‘ 既不會影響你的測試程式碼,也不會影響別人呼叫你的介面函式;
三.猜你喜歡
- Python for 迴圈
- Python 字串
- Python 列表 list
- Python 元組 tuple
- Python 字典 dict
- Python 條件推導式
- Python 列表推導式
- Python 字典推導式
- Python 函式宣告和呼叫
- Python 不定長引數 *argc/**kargcs
- Python 匿名函式 lambda
- Python return 邏輯判斷表示式
- Python 字串/列表/元組/字典之間的相互轉換
- Python 區域性變數和全域性變數
- Python type 函式和 isinstance 函式區別
- Python is 和 == 區別
- Python 可變資料型別和不可變資料型別
- Python 淺拷貝和深拷貝
未經允許不得轉載:猿說程式設計 » Python __name__ == ‘__main__’詳細解釋
本文由部落格 - 猿說程式設計 猿說程式設計 釋出!