標籤:func 代碼 mod 3.x 檔案 轉換 操作 base too
6. 模組(一個 .py 檔案稱為一個模組Module)
import 語句
類似 _xxx 和 __xxx 這樣的 函數/變數 是非公開的(private),不應該被直接引用
函數定義: 外部不需要引用的函數全部定義成private,只有外部需要引用的函數才定義為public。
執行個體屬性和類屬性
千萬不要把執行個體屬性和類屬性使用相同的名字,因為相同名稱的執行個體屬性將屏蔽掉類屬性,但是當你刪除執行個體屬性後,再使用相同的名稱,訪問到的將是類屬性。
@property裝飾器 --簡化代碼,避免每個函數編寫重複的代碼 python 裝飾模式--可對函數、方法或類進行裝飾
**案例1(不帶參數的decorator,兩層嵌套):
import functools #匯入functools包def log(func):@functools.wraps(func) #wrapper.__name__ = func.__name__ def wrapper(*args, **kw): #wrapper可接收任意參數的調用print ‘call %s():‘ % func.__name__ #在運行 func() 函數前列印一行日誌return func(*args, **kw)return wrapper@log #等價於執行 now = log(now)def now(): #調用 now() 將執行在 log() 函數中返回的 wrapper() 函數print ‘2013-12-25
**案例2(帶參數的decorator,三層嵌套):
import functoolsdef log(text): #第一層嵌套def decorator(func): #第二層嵌套@functools.wraps(func)def wrapper(*args, **kw): #第三層嵌套print ‘%s %s():‘ % (text, func.__name__) #在運行 func() 函數前列印一行帶參數的日誌return func(*args, **kw)return wrapperreturn decorator@log(‘execute‘) #等價於執行 now = log(‘execute‘)(now)def now():print ‘2013-12-25‘
偏函數(Partial function): 結合預設參數理解
--> 設定某些參數的預設值,並返回一個新的函數,之後調用這個新函數會更便於操作。
案例對比:
def int2(x, base=2): #傳統方法return int(x, base)
import functools #採用偏函數方法int2 = functools.partial(int, base=2) #二進位轉換
__future__
案例:在Python 2.7的代碼中直接使用Python 3.x的除法,可以通過 __future__ 模組的 division 實現
from __future__ import division
python筆記6:模組