import 語句
相似 _xxx 和 __xxx 這樣的 函數/變量 是非公開的(private),不該該被直接引用
函數定義: 外部不須要引用的函數所有定義成private,只有外部須要引用的函數才定義爲public。
實例屬性和類屬性
千萬不要把實例屬性和類屬性使用相同的名字,由於相同名稱的實例屬性將屏蔽掉類屬性,可是當你刪除實例屬性後,再使用相同的名稱,訪問到的將是類屬性。
@property裝飾器 --簡化代碼,避免每一個函數編寫重複的代碼 python 裝飾模式--可對函數、方法或類進行裝飾
**案例1(不帶參數的decorator,兩層嵌套):python
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,三層嵌套):app
import functools def log(text): #第一層嵌套 def decorator(func): #第二層嵌套 @functools.wraps(func) def wrapper(*args, **kw): #第三層嵌套 print '%s %s():' % (text, func.__name__) #在運行 func() 函數前打印一行帶參數的日誌 return func(*args, **kw) return wrapper return 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 divisionspa