【python】if __name__ == '__main__' 淺析
我們經常在python 程式中看到 if __name__ == '__main__' :這代表什麼意思?
python中 模組是物件,並且所有的模組都有一個內建屬性 __name__。一個模組的__name__的值取決於您如何應用模組。如果 import 一個模組,那麼模組__name__ 的值通常為模組檔名,不帶路徑或者副檔名。但是您也可以像一個標準的程式樣直接執行模組,在這 種情況下, __name__ 的值將是一個特別預設"__main__"。
具體一點,在cmd 中直接執行.py檔案,則__name__的值是'__main__';
而在import 一個.py檔案後,__name__的值就不是'__main__'了;
從而用if __name__ == '__main__'來判斷是否是在直接執行該.py檔案
[root@rac1 python]# cat st.py
#!/usr/bin/evn python
import os
import time
file = "/root/sed.txt"
def dump(st):
mode,ino, dev, nlink, uid, gid, size, atime, mtime, ctime = st
print "- size :", size, "bytes"
print "- owner:", uid, gid
print "- created:", time.ctime(ctime)
print "- last accessed:", time.ctime(atime)
print "- last modified:", time.ctime(mtime)
print "- mode:", oct(mode)
print "- inode/dev:", ino, dev
# # get stats for a filename
if __name__ == '__main__':
st = os.stat(file)
print "stat : "
print dump(st)
# # get stats for an open file
fp = open(file)
st = os.fstat(fp.fileno())
print "fstat : "
print dump(st)
你在cmd中輸入:
[root@rac1 python]# python st.py
stat :
- size : 23 bytes
- owner: 0 0
- created: Tue Nov 20 21:56:19 2012
- last accessed: Wed Nov 21 14:43:08 2012
- last modified: Tue Nov 20 21:56:19 2012
- mode: 0100644
- inode/dev: 17039538 2051
None
fstat :
- size : 23 bytes
- owner: 0 0
- created: Tue Nov 20 21:56:19 2012
- last accessed: Wed Nov 21 14:43:08 2012
- last modified: Tue Nov 20 21:56:19 2012
- mode: 0100644
- inode/dev: 17039538 2051
None
說明:"__name__ == '__main__'"是成立。
[root@rac1 python]# python
Python 2.5 (r25:51908, Jun 6 2012, 10:32:42)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> __name__ #當前程式的__name__
'__main__'
>>>
>>>
>>> import st
>>> st.__name__ #st 模組的__name__
'st'
>>>
無論怎樣,st.py中的"__name__ == '__main__'"都不會成立的!
所以,下一行程式碼永遠不會執行到!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-759793/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python中“if __name__=='__main__PythonAI
- if __name__==”__main__”:AI
- if __name__ == ‘__main__‘AI
- if __name__=="__main__":AI
- Python中if __name__ == '__main__'作用解析PythonAI
- python中if __name__ == '__main__': 的解析PythonAI
- python中的__name__=='__main__'如何簡單理解PythonAI
- __name__ == "__main__"的作用是什麼?AI
- __name__ == “__main__”的作用是什麼?AI
- ~~物件導向進階(二)——__name__=="__main__"~~物件AI
- __name__ == '__main__' 到底是什麼意思AI
- 寫了2年python,知道 if __name__ == '__main__' 什麼意思嗎?PythonAI
- Python面試|一文讓你讀懂if __name__=='__main__'的含義Python面試AI
- python元類淺析Python
- Python yield 使用淺析Python
- python的metaclass淺析Python
- 【轉】Python yield 使用淺析Python
- 用Python淺析股票資料Python
- Python wsgiref 模組原始碼淺析Python原始碼
- 【Python】__name__ 是什麼?Python
- 【Python】傳送郵件功能淺析Python
- Python基礎:關於__name__Python
- iOS Block淺淺析iOSBloC
- 淺析Python專案伺服器部署Python伺服器
- 淺析 JWTJWT
- MongoDB淺析MongoDB
- RunLoop 淺析OOP
- Nginx淺析Nginx
- 淺析 requestAnimationFramerequestAnimationFrame
- 淺析PromisePromise
- 淺析GitGit
- 淺析RedisRedis
- Jvm 淺析JVM
- 淺析 Python 的類、繼承和多型Python繼承多型
- 淺析常用的Python Web的幾大框架PythonWeb框架
- Webpack 原理淺析Web
- css: clip淺析CSS
- 淺析Promise原理Promise