標籤:
if __name__==‘__main__‘:用法:
當我們在命令列運行模組檔案時,Python解譯器把一個特殊變數__name__
置為__main__
,而如果在其他地方匯入該hello
模組時,if
判斷將失敗,因此,這種if
測試可以讓一個模組通過命令列運行時執行一些額外的代碼,最常見的就是運行測試。
if __name__==‘__main__‘: test()
範圍
在一個模組中,我們可能會定義很多函數和變數,但有的函數和變數我們希望給別人使用,有的函數和變數我們希望僅僅在模組內部使用。在Python中,是通過_
首碼來實現的。
正常的函數和變數名是公開的(public),可以被直接引用,比如:abc
,x123
,PI
等;
類似__xxx__
這樣的變數是特殊變數,可以被直接引用,但是有特殊用途,比如上面的__author__
,__name__
就是特殊變數,hello
模組定義的文檔注釋也可以用特殊變數__doc__
訪問,我們自己的變數一般不要用這種變數名;
類似_xxx
和__xxx
這樣的函數或變數就是非公開的(private),不應該被直接引用,比如_abc
,__abc
等;
之所以我們說,private函數和變數“不應該”被直接引用,而不是“不能”被直接引用,是因為Python並沒有一種方法可以完全限制訪問private函數或變數,但是,從編程習慣上不應該引用private函數或變數。
private函數或變數不應該被別人引用,那它們有什麼用呢?請看例子:
def _private_1(name): return ‘Hello, %s‘ % namedef _private_2(name): return ‘Hi, %s‘ % namedef greeting(name): if len(name) > 3: return _private_1(name) else: return _private_2(name)
我們在模組裡公開greeting()
函數,而把內部邏輯用private函數隱藏起來了,這樣,調用greeting()
函數不用關心內部的private函數細節,這也是一種非常有用的代碼封裝和抽象的方法,即:
外部不需要引用的函數全部定義成private,只有外部需要引用的函數才定義為public。
五、python使用模組