if __name__ == __main___python中 __name__ == #x27;__main__#x27; 有什么作用?

python中if __name__ == ‘__main__’ 的作用,到底干嘛的?

有句話經典的概括了這段代碼的意義:

“Make a script both importable and executable”

就是讓你寫的腳本模塊既可以導入到別的模塊中用,另外該模塊自己也可執行

這句話,可能一開始聽的還不是很懂。下面舉例說明:

先寫一個模塊:

#module.py
def main():print "we are in %s"%__name__
if __name__ == '__main__':main()

這個函數定義了一個main函數,我們執行一下該py文件發現結果是打印出”we are in __main__“,說明我們的if語句中的內容被執行了,調用了main():

但是如果我們從另我一個模塊導入該模塊,并調用一次**main()**函數會是怎樣的結果呢?

其執行的結果是:we are in module

但是沒有顯示”we are in __main__“,也就是說模塊__name__ = ‘__main__’ 下面的函數沒有執行。

這樣既可以讓“模塊”文件運行,也可以被其他模塊引入,而且不會執行函數2次。這才是關鍵。

總結一下:

如果我們是直接執行某個.py文件的時候,該文件中那么__name__ == '__main__'是True,但是我們如果從另外一個.py文件通過import導入該文件的時候,這時__name__的值就是我們這個py文件的名字而不是__main__

這個功能還有一個用處:調試代碼的時候,在if__name__ =='__main__'中加入一些我們的調試代碼,我們可以讓外部模塊調用的時候不執行我們的調試代碼,但是如果我們想排查問題的時候,直接執行該模塊文件,調試代碼能夠正常運行!

當你打開一個.py文件時,經常會在代碼的最下面看到if__name__ == '__main__':,現在就來介 紹一下它的作用.

模塊是對象,并且所有的模塊都有一個內置屬性__name__。一個模塊的__name__ 的值取決于您如何應用模塊。如果 import 一個模塊,那么模塊__name__ 的值通常為模塊文件名,不帶路徑或者文件擴展名。但是您也可以像一個標準的程序樣直接運行模塊,在這 種情況下, __name__的值將是一個特別缺省__main__

在cmd 中直接運行.py文件,則__name__的值是__main__;

而在import 一個.py文件后,__name__的值就不是__main__了;

從而用if __name__ == '__main__'來判斷是否是在直接運行該.py文件

如:

#Test.pyclass Test:def __init(self):passdef f(self):print 'Hello, World!'if __name__ == '__main__':Test().f()#End

你在cmd中輸入:

C:>python Test.pyHello, World!

說明:"_name_ == ‘_main_’"是成立的

你再在cmd中輸入:

C:>python>>>import Test>>>Test.__name__                #Test模塊的__name__'Test'>>>__name__                       #當前程序的__name__'__main__'

無論怎樣,Test.py中的__name__ == '__main__'都不會成立的!

所以,下一行代碼永遠不會運行到!

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

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

相關文章

密碼學專題 非對稱加密算法指令概述 DSA算法指令

DSA算法和DSA指令概述 DSA算法是美國國家標準的數字簽名算法,只具備數字簽名的功能不具備密鑰交換的功能生成DSA參數然后生成DSA密鑰,DSA參數決定了DSA密鑰的長度三個指令首先是dsaparam指令,該指令主要用來生成DSA密鑰參數,并提…

每天定時打開某個網頁_Python科普帖定時通知

0 復習上一關我們學習了selenium,它有可視模式與靜默模式這兩種瀏覽器的設置方法,二者各有優勢。然后學習了使用.get(URL)獲取數據,以及解析與提取數據的方法。在這個過程中,我們操作對象的轉換過程:除了上面的方法&am…

java 構造器

概念 案例1 package lesson.l11_oop2;/*** Illustration** author DengQing* version 1.0* datetime 2022/7/3 15:28* function*/ public class Person {private int age;private String name;public Person() {this.age 18;}public Person(int age, String name) {this.age …

密碼學專題 信息摘要和數字簽名指令

信息摘要 區別于對稱加密和非對稱加密,信息摘要算數是一種不可逆的操作,無論輸入數據的大小輸出的數據長度是固定的信息摘要算數對輸入很敏感,即使數據變化很細微,輸出的結果會出現很大的差異從不同輸入得到相同的輸出的概率非常…

dataframe 篩選_Spark.DataFrame與Spark.ML簡介

本文是PySpark銷量預測系列第一篇,后面會陸續通過實戰案例詳細介紹PySpark銷量預測流程,包含特征工程、特征篩選、超參搜索、預測算法。在零售銷量預測領域,銷售小票數據動輒上千萬條,這個量級在單機版上進行數據分析/挖掘是非常困…

密碼學專題 證書和CA指令 證書和CA功能概述

為什么需要證書 實現了公鑰和私鑰的相互驗證,但是任何人都可以生成很多的密鑰對,密鑰對并沒有關聯實體身份,因此誕生可數字證書前提是CA是所有用戶都信任的用戶需要將自己的信息和公鑰交給CA進行認證生成一個屬于自己并被其與用戶認可的數字…

python怎么接外活_java和Python兩門語言,哪個適合接活單干?

謝邀。 根據知乎規矩:不說需求就挑語言的行為就是耍流氓。 如果接的活傾向于OA系統、管理系統之類的,建議是java,畢竟框架模板都很成熟,也比較好找,快速開發什么的在晚上搜一下,改改樣式就可以了。這些項目…

密碼學專題 證書和CA指令 申請證書|建立CA|CA操作|使用證書|驗證證書

Req指令介紹 功能概述和指令格式 req指令一般來說應該是提供給證書申請用戶的工具,用來生成證書請求以便交給CA驗證和簽發證書。但是,OpenSSL的req指令的功能遠比這樣的要求強大得多,它不僅可以生成RSA密鑰、DSA密鑰,以及將它們…

python語言編寫一個生成九宮格圖片的代碼_python實現圖片九宮格分割

大家都知道在微信朋友圈或者微博以及QQ動態中,有很多“強迫癥患者”發圖片都愛發9張,而有些圖是一張圖片分成的九宮圖,對于這種操作,大家知道是怎么做到的嗎? 本文就是用Python做的一個九宮格圖片生成器,是…

密碼學專題 OpenSSL標準轉換指令

概述 繁多復雜的各種文件編碼格式、證書格式和密鑰格式等。事實上,并非OpenSSL開發者想要將數字世界弄得如此令人頭疼,只是由于各種原因,數字世界存在各種不同的標準,為了盡量兼容這些不同的標準,OpenSSL開發者才相應…

java pakage、import關鍵字

package介紹 常用的包 import 案例

python數組初始化_Python Numpy 數組的初始化和基本操作

Python 是一種高級的,動態的,多泛型的編程語言。Python代碼很多時候看起來就像是偽代碼一樣,因此你可以使用很少的幾行可讀性很高的代碼來實現一個非常強大的想法。 一.基礎: Numpy的主要數據類型是ndarray,即多維數組…

密碼學專題 OpenSSL中SSL相關指令

再談SSL和OpenSSL 由于SSL協議已經是密碼學和PKI技術中非常具體的一個應用協議,為了實現它,OpenSSL在密碼學基礎應用和PKI技術的基礎實現上做了大量的工作,才逐漸形成和奠定了OpenSSL在密碼學應用和PKI技術開發中的重要基礎軟件包地位。Open…

python企業發放的獎金_你公司的年終獎發了嗎?

沒發, 被裁了. 跨境電商行業, 2017.7 入職,2018.11.19 下午接到裁員通知.. 人事找我聊了下,叫我一個星期之內走,補償1個月工資.... 我想想有點不對勁.. 于是我百度了下,5分鐘之后,提出了我的方案: 1、按照勞動法應該補償1.5個月,并且提前1月通知 2、補償2.5個月. 我立馬走. 最后…

使用MetaMask實現轉賬交易時附帶Input Data數據

進入如下頁面,點擊View Assert in Explorer進入Etherscan網站,就可以看到本賬戶先前所有的交易信息。 字段分析 Txn Hash 是交易的HashMethod:交易的類型,一般是兩種,如果是Transfer指定的是合約部署;如…

Ubuntu安裝Google瀏覽器

下載谷歌瀏覽器 直接使用Ubuntu自帶的火狐瀏覽器進行下載 默認下載到/tmp臨時文件夾里面,考慮到權限問題,需要將其移動到 Downloads文件夾下面使用命令 sudo mv ./goo(Tab)~/Down(Tab)使用命令行的方式進行下載 wget https://dl.g…

普通類創建獲取session 方式_猿蛻變11——一文搞懂mybatis花式使用方式

看過之前的蛻變系列文章,相信你對mybatis有了初步的認識。但是這些還不夠,我們今天進一步來了解下mybatis的一些用法。猿蛻變同樣是一個原創系列文章,幫助你從一個普通的小白,開始掌握一些行業內通用的框架技術知識以及鍛煉你對系…

Ubuntu配置IPFS的環境

參考鏈接 Ubuntu上IPFS環境搭建 - 簡書 下載安裝包 下載地址:https://dist.ipfs.io/#go-ipfs頁面會自動根據你的操作系統提供適合的下載安裝包,所以需要在Ubuntu環境下點開上面那個鏈接,網頁自動識別當前的平臺并提供對應的版本&#xff0c…