python自學筆記9之模組和類

2021-07-23 01:09:56 字數 1989 閱讀 5953

自己寫乙個模組

我們以內建的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 ...