python筆記6:模塊

6. 模塊(一個 .py 文件稱爲一個模塊Module)

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

相關文章
相關標籤/搜索