淺析python 中__name__ = '__main__' 的作用

PC教程網】關于淺析python 中__name__ = '__main__' 的作用_python name main介紹:很多新手剛開始學習python的時候經常會看到python 中__name__ = \'__main__\' 這樣的代碼,可能很多新手一開始學習的時候都比較疑惑,python 中__name__ = '__main__' 的作用,到底干嘛的? 有句話經,下面小編為您針對淺析python 中__name__ = '__main__' 的作用進行分享:

很多新手剛開始學習python的時候經常會看到python 中__name__ = \'__main__\' 這樣的代碼,可能很多新手一開始學習的時候都比較疑惑,python 中__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()函數會是怎樣的結果呢?

#anothermodle.py
from module import 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__'“中加入一些我們的調試代碼,我們可以讓外部模塊調用的時候不執行我們的調試代碼,但是如果我們想排查問題的時候,直接執行該模塊文件,調試代碼能夠正常運行!

相關教程

詳解Python函數作用域的LEGB順序

本文為大家介紹了Python函數作用域的查找順序,供大家參考,具體內容如下 1.什么是LEGB? L: local 函數內部作用域 E: enclosing 函數內部與內嵌函數之間 G: global 全局作用域 B: build-in 內置作 …

Python中操作文件之write()方法的使用教程

write()方法把字符串str寫入文件。沒有返回值。由于緩沖,字符串可能不實際顯示文件,直到flush()或close()方法被調用。 語法 以下是write()方法的語法: fileObject.write( str ) 參數 str -- 這是 …

Python 實現 貪吃蛇大作戰 代碼分享

Python 實現 貪吃蛇大作戰 代碼分享

感覺游戲審核新政實施后,國內手游市場略冷清,是不是各家的新游戲都在排隊等審核。媒體們除了之前競相追捧《Pokemon Go》熱鬧了一把,似乎也聽不到什么聲音了。直到最近幾天,突 …

python 文件操作api(文件操作函數)

python中對文件、文件夾(文件操作函數)的操作需要涉及到os模塊和shutil模塊。 得到當前工作目錄,即當前Python腳本工作的目錄路徑: os.getcwd() 返回指定目錄下的所有文件和目錄名:os. …

python版本的讀寫鎖操作方法

本文實例講述了python版本的讀寫鎖操作方法。分享給大家供大家參考,具體如下: 最近要用到讀寫鎖的機制,但是python2.7的自帶庫里居然木有. 網上講讀寫鎖的例子眾多,但是原理簡單,代 …

python制作最美應用的爬蟲

安卓最美應用頁面爬蟲,爬蟲很簡單,設計的東西到挺多的 文件操作 正則表達式 字符串替換等等 import requestsimport reurl = "http://zuimeia.com"r = requests.get('http://zuimeia.com/community/app/hot/platf …

使用httplib模塊來制作Python下HTTP客戶端的方法

使用httplib模塊來制作Python下HTTP客戶端的方法

httplib 是 python中http 協議的客戶端實現,可以使用該模塊來與 HTTP 服務器進行交互。httplib的內容不是很多,也比較簡單。以下是一個非常簡單的例子,使用httplib獲取google首頁的html: …

python操作sqlite的CRUD實例分析

本文實例講述了python操作sqlite的CRUD實現方法。分享給大家供大家參考。具體如下: import sqlite3 as dbconn = db.connect('mytest.db')cursor = conn.cursor()cursor.execute("drop table if exists datecounts")cursor.ex …

Python中__name__的使用實例

1. 如果模塊是被導入,__name__的值為模塊名字 2. 如果模塊是被直接執行,__name__的值為'__main__' Py1.py 教程實例 代碼如下: #!/usr/bin/env python def test(): print '__name__ = ',__name__ if __name__ == '_ …

python使用點操作符訪問字典(dict)數據的方法

本文實例講述了python使用點操作符訪問字典(dict)數據的方法。分享給大家供大家參考。具體分析如下: 平時訪問字典使用類似于:dict['name']的方式,如果能通過dict.name的方式訪問會更方 …

内蒙古十一选五任五推荐号