if __name__=‘__main__‘的用處

在 Python 中,if __name__ == '__main__':是一個常見的代碼模式,用于控制模塊的執行行為。它的核心作用是區分模塊是被直接運行還是被導入到其他文件中

作用詳解:

  1. ?當文件被直接運行時?

    __name__會被自動設置為 '__main__',此時 if塊內的代碼會執行。

  2. ?當文件被導入時?

    __name__會變成模塊的名稱(即文件名),此時 if塊內的代碼不會執行


實際用途:

1. 防止導入時執行測試代碼
# mymodule.py
def useful_function():print("This is useful!")# 測試代碼(只在直接運行時執行)
if __name__ == '__main__':print("Running tests...")useful_function()
  • 直接運行 python mymodule.py→ 輸出測試結果

  • 其他文件導入 import mymodule→ 不會觸發測試代碼

2. 創建可復用模塊
# utils.py
def helper():print("Helper function")if __name__ == '__main__':# 直接運行時提供命令行操作print("Running in CLI mode")helper()
  • 作為模塊導入時:只提供 helper()函數

  • 直接運行時:變成命令行工具

3. 分離代碼邏輯
# main.py
import data_processordata = load_data()
processed = data_processor.process(data)  # 導入時不觸發執行if __name__ == '__main__':save_results(processed)  # 只有直接運行時保存結果

技術原理:

  • Python 解釋器在運行文件時,會創建一個特殊變量 __name__

  • 直接運行時:__name__ = "__main__"

  • 被導入時:__name__ = "模塊名"(如 "mymodule"

最佳實踐:

? 將腳本的入口代碼放在 if __name__ == '__main__':

? 模塊的核心功能定義在外部函數中

? 避免在模塊頂層寫直接執行的代碼(除非明確需要)

📌 ?關鍵總結?:這個結構讓 Python 文件既能作為獨立程序運行,又能作為模塊被安全導入,是 Python 模塊化編程的基礎設計模式。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95502.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95502.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95502.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL慢查詢優化策略

一、問題定位 1、慢查詢日志 -- 查看當前設置 SHOW VARIABLES LIKE slow_query%; ? -- 開啟慢查詢日志(my.cnf永久配置) [mysqld] slow_query_log 1 slow_query_log_file /var/log/mysql/slow.log long_query_time 1 -- 超過1秒的查詢 log_querie…

如何使用 ASP.NET Core 創建基于角色的 Web API

在使用 ASP.NET Core 構建基于角色的 Web API 時,代碼優先方法是一種強大而高效的方法。使用它,我們可以在代碼中定義數據模型和關系,然后自動生成相應的數據庫模式。這會帶來什么?當然是更快的開發周期和更大的靈活性。為什么&am…

無字母數字命令執行

寫在前面 說白了數字還是好構造的,bash的算數拓展! base64命令 這玩意說白了有點雞肋,因為你得知道flag的文件名和位置! base64 flag.php這個會將flag.php里面的內容給base64編碼輸出來。那么如何用無字母數字構造呢? …

AAB包轉apks轉apk

1. 下載bundletool-all-1.17.2.jar(不一定非得1.17.2,可以其他版本) https://github.com/google/bundletool/releases/tag/1.17.2 2. 在aab、keystore、bundletool-all-1.17.2.jar的目錄下,運行指令 java -jar bundletool-all-1…

從零開始:用uv構建并發布一個Python CLI應用,集成CI/CD自動化發布與Docker容器化部署

使用uv構建并發布一個完整的Python CLI應用 概述 初始化項目 編寫應用代碼 定義項目 (`pyproject.toml`) 使用`uv`安裝依賴 本地運行和測試 依賴鎖定 構建 發布 生產環境實踐之CI/CD 創建工作流配置文件 配置GitHub Secrets 創建和推送tag 驗證發布 生產環境實踐之Docker 創建D…

如何在Qt中使用周立功USB轉CAN卡

如何在 Qt 中使用周立功 USB 轉 CAN 卡 文章目錄如何在 Qt 中使用周立功 USB 轉 CAN 卡一、簡介二、準備工作三、使用四、運行效果五、寫在最后?一、簡介 最近在工程中用到了周立功的 USB 轉 CAN 卡,需求是要通過上位機進行通信,因此有了這篇文章。 有…

JavaScript 源碼剖析:從字節碼到執行的奇妙旅程

JavaScript,這門風靡全球的腳本語言,以其靈活性和跨平臺性征服了無數開發者。我們每天都在使用它,但它在后臺是如何工作的?一段看似簡單的JS代碼,在執行之前究竟經歷了哪些“變形記”?今天,讓我…

FPGA—硬件電路一旦上電配置完成,各個功能模塊會并行地持續工作

1.示例代碼參考這段代碼是用 Verilog 編寫的一個 LED 閃爍控制模塊,主要實現了 LED 按一定時間間隔循環移位閃爍的功能。下面詳細解釋其架構組成:模塊定義與端口聲明模塊名為 led_flash,包含三個端口:sys_clk:輸入端口…

從零到上線:Docker、Docker Compose 與 Runtime 安裝部署全指南(含實戰示例與應用場景)

文章目錄一、Docker 安裝1. Ubuntu / Debian(官方倉庫)2. RHEL / CentOS / Rocky / AlmaLinux3. 驗證4. macOS / Windows(Docker Desktop)二、Docker Compose(V2)安裝與基本用法1) 驗證2) 最小示例&#xf…

Java基礎篇02:基本語法

1 注釋 注釋是寫在程序中對代碼進行解釋說明的文字,方便自己和其他人查看,以便理解程序的。注釋分為三種:單行注釋、多行注釋、文檔注釋注釋不影響代碼的執行: 原因是編譯后的文件已經沒有注釋了// 這是單行注釋:。通常…

【SECS/GEM 】SECS/GEM 日志管理相關的消息

明白 ? 在 SECS/GEM 架構里,設備日志(Equipment Logging 主要涉及 事件日志(Event Log)、報警日志(Alarm Log)、配方操作日志(Recipe Log)、以及用戶操作/命令日志。這些日志通過 S…

ragas 框架使用Chat-GLM模型報API 調用參數有誤,請檢查文檔

ragas 框架使用Chat-GLM模型報API 調用參數有誤,請檢查文檔解決方案 from ragas.llms import LangchainLLMWrapper # 點擊LangchainLLMWrapper 進入這個類找到這個方法直接 return 0.1出現問題原因 ChatGLM 不支持設置temperature等于0,默認的值太小了

Kaggle - LLM Science Exam 大模型做科學選擇題

Kaggle - LLM Science Exam Science Exam Simple Approach w/ Model Hub | Kaggle Platypus2-70B with Wikipedia RAG | Kaggle 5個選項只有一個選項正確,目標:回答一個選項序列(只有前三個有效) 輸出正確選項 (可…

貪吃蛇魚小游戲抖音快手微信小程序看廣告流量主開源

核心優勢:為流量主運營者與新手量身打造 1. 為流量主運營者破解成本困局 本地化運行,零服務器成本:數據運行與存儲全程在用戶手機本地完成,無需部署服務器及后臺系統,徹底擺脫服務器租賃、維護等硬性支出,…

PDF Reader 編輯閱讀工具(Mac中文)

原文地址:PDF Reader 編輯閱讀 for Mac v5.2.0 PDF Reader Pro Mac,是一款PDF編輯閱讀,PDF Reader Pro讓您直接在 Mac 上進行PDF文件閱讀、筆記、編輯、轉換、創建PDF、簽署PDFs、填寫PDF Forms表單、設置密碼、合并拆分文件、水印等等&…

Django REST framework:SimpleRouter 使用指南

1. SimpleRouter 是什么? SimpleRouter 是 DRF(Django REST framework)提供的路由器,能根據 ViewSet 自動生成標準的 REST 路由,包括: GET /resources/ → 列表(list)POST /resource…

覆蓋Transformer、GAN:掩碼重建正在重塑時間序列領域!

隨著大數據與深度學習的發展,時間序列分析的建模能力顯著提升,而掩碼重建作為一種自監督學習范式,已成為提升序列表征能力的重要技術。該方法通過隨機掩碼部分數據并重建原始序列,迫使模型挖掘時序依賴性與潛在模式,在…

用AI做TikTok影視解說,全流程全自動成片,不懂外語也能做全球矩陣!

多語種解說: 短劇出海狂吸美金 多語種解說搶先機 TikTok、YouTube等平臺,尤其在非英語市場,內容供給仍遠遠不足,每一個小語種市場都是潛在藍海。 有人用英語講仙俠、西語講爽劇、日語講宮斗、阿語講懸疑,一夜漲粉百…

解密大語言模型推理:輸入處理背后的數學與工程實踐

解密大語言模型推理:輸入處理背后的數學與工程實踐當你向ChatGPT提問時,短短幾秒內就能獲得流暢的回答,這背后隱藏著怎樣的技術魔法?答案在于大語言模型高效推理過程中精妙的輸入處理機制。在現代大語言模型推理中,輸入…

02、連接服務器的幾種方式

02、連接服務器的幾種方式 1、Xshell 適用于Windows https://www.xshell.com/en/free-for-home-school/ 2、Termius 適用于MacOS 直接蘋果商店下載即可 3、IDEA 連接 Tools - Deployment - Browse Remote Host 1、打開Browse Remote Host2、添加服務3、輸入服務器連接信息并測試…