Python自己就內置了不少很是有用的模塊,只要安裝完畢,這些模塊就能夠馬上使用
Python模塊的標準文件模板
第一行到import語句以前是標準的模板,固然也能夠所有刪掉不寫,可是,按標準辦事確定沒錯
import開始是真正的代碼部分python
#!/usr/bin/env python3 #讓這個hello.py文件直接在Unix/Linux/Mac上運行 # -*- coding: utf-8 -*- #表示.py文件自己使用標準UTF-8編碼,就是告訴解釋器請使用UTF-8編碼執行文件 ' a test module ' #表示模塊的文檔註釋,任何模塊代碼的第一個字符串都被視爲模塊的文檔註釋 __author__ = 'Michael Liao' #使用__author__變量把做者寫進去,這樣當你公開源代碼後別人就能夠瞻仰你的大名 #模塊定義的文檔註釋也能夠用特殊變量__doc__訪問 import sys #表示導入sys模塊,代碼裏sys就是一個變量,該變量指向該模塊,利用sys這個變量,就能夠訪問sys模塊的全部功能 def test(): args = sys.argv #sys模塊有一個argv變量,用list存儲了命令行的全部參數 if len(args)==1: print('Hello, world!') elif len(args)==2: print('Hello, %s!' % args[1]) else: print('Too many arguments!') #在命令行運行hello模塊文件時,Python解釋器把一個特殊變量__name__置爲__main__,而若是在其餘地方導入該hello模塊時,if判斷將失敗 #所以,這種if測試可讓一個模塊經過命令行運行時執行一些額外的代碼,最多見的就是運行測試 if __name__=='__main__': test() #裏面能夠寫一些經過命令行運行該文件時的處理,其餘模塊調用該文件時這些處理是沒法被執行的,只能在命令行時被執行 #sys.argv至少有一個元素,由於第一個參數永遠是該.py文件的名稱,如:運行python hello.py得到的sys.argv就是['hello.py'] #運行python3 hello.py Michael得到的sys.argv就是['hello.py', 'Michael] -------------------------------------------------------------------------------------------------------------------------------------------- #命令行執行 >>>python3 hello.py #輸出:Hello, world! >>>python hello.py Michael #輸出:Hello, Michael! >>>import hello #沒有打印Hello, word!,由於沒有執行test()函數 >>>hello.test() #輸出:Hello, world!
做用域
在一個模塊中,可能會定義不少函數和變量
在Python中,哪些函數和變量但願是給別人使用?哪些函數和變量是僅在模塊內部使用?是經過_前綴來實現的
公開(public)
命名規則:xxx
說明:正常的函數和變量名是公開的,能夠被直接引用,好比:abc,x123,PI等
編程
特殊用途
命名規則:__xxx__
說明:這樣的變量是有特殊用途特的殊變量,可被直接引用
如__author__,__name__,自定義變量通常不要用這種變量名(不是不能夠,只是最好不要寫,用python全靠自覺)
例如,在Python中,若是調用len()函數試圖獲取一個對象的長度,實際上,在len()函數內部,它自動去調用該對象的__len__()方法
也就是說,執行len('ABC')時,其實在內部是在執行'ABC'.__len__()函數
非公開(private)
命名規則:_xxx 或者 __xxx
說明:這樣的函數或變量就是非公開的(private),不該被直接引用,好比_abc,__abc等
Python並無一種方法能夠徹底限制訪問private函數或變量,所以只是從編程習慣上不該該引用private函數或變量,但不意味着不能引用
關於公開與非公開函數及變量的使用原則:
外部不須要引用的函數所有定義成private,只有外部須要引用的函數才定義爲public測試