自己寫乙個模組
我們以內建的sys模組為例,編寫乙個hello的模組:
__author__='zerof'
import sys
print('name is:',__name__)
deftest
(): args=sys.argv
if len(args)==1:
print('hello,world')
elif len(args)==2:
print('hello, %s!' %args[1])
else:
print('too many arguments!')
print(sys.argv,__name__)
if __name__=='__main__':
test()
第1行和第2行是標準注釋,第1行注釋可以讓這個hello.py檔案直接在unix/linux/mac上執行,第2行注釋表示.py檔案本身使用標準utf-8編碼;
第4行是乙個字串,表示模組的文件注釋,任何模組**的第乙個字串都被視為模組的文件注釋;
第6行使用$__author__變數把作者寫進去,這樣當你公開源**後別人就可以瞻仰你的大名;
以上就是python模組的標準檔案模板,當然也可以全部刪掉不寫,但是,按標準辦事肯定沒錯。
比較:
在spyder中直接執行hello922.py結果:
hello,world
['g:/program files/py/anacode/aworks/hello922.py'] __main__
區別是執行了test函式,所以列印了hello, word,因此可以通過直接執行模組檔案呼叫測試函式,而將模組交付時,通過import 模組名 的方式,內部測試函式不會被呼叫,
為什麼呢?
看最後那個if判斷,關鍵在
__name__
,當直接執行模組原檔案時,其值為
__main__
,當匯入模組時,其值為模組名。
檢視安裝了某些模組,可以使用pip list,前提是,你已經安裝了pip,安裝pip是在cmd命令裡面進行的,先進入你python安裝的目錄(這個應該沒有問題吧,就是cd..),然後直接easy_install pip就完成了。
關於自定義類
主要了解乙個函式:python中,
__init__()
物件的「建構函式」,負責在物件初始化時進行一系列的構建操作
對於用於特殊場合的類,可能要求在物件建立時,進行連線資料庫、連線ftp伺服器、進行api驗證等操作,這些初始化操作,都可以封裝在
__init__()
方法中進行
__init__
方法使用如下規則定義:
class ex:
def __init__(self):
pass
__init__
方法必須接受至少乙個引數即self,python中,self是指向該物件本身的乙個引用,通過在類的內部使用self變數,類中的方法可以訪問自己的成員變數,簡單來說,self.varname的意義為」訪問該物件的varname屬性「
當然,__init__()
中可以封裝任意的程式邏輯,這是允許的,
__init__()
方法還接受任意多個其他引數,允許在初始化時提供一些資料,例如,對於剛剛的worker類,可以這樣寫:
class worker:
def __init__(self,name,pay):
self.name=name
self.pay=pay
這樣,在建立worker類的物件時,必須提供name和pay兩個引數 Python自學筆記 9 裝飾器
裝飾器是乙個函式,其主要用途是包裝另乙個函式或類。這種包裝的首要目的是光明正大地修改或增強被包裝物件的行為。其語法上使用特殊的符號 表示裝飾器。這裡摘錄廖雪峰老師部落格的部分內容!函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式 def func print hello ...
自學Python 常用模組之time模組
import time print time.time 1536500505.9982672 時間戳 print time.strftime y m d h m s 2018 09 09 21 50 16 s time.localtime 結構化時間 time.struct time tm year...
python自學 (五) 模組
定義重用模組,模組的檔名必須以.py為副檔名 建立位元組編譯檔案 pyc,可以使模組的輸入變快 在別的程式中使用該模組 每個模組對應的名稱屬性 filename using name.py if name main print this program is being run by itself ...