「回調函數就是一個經過函數指針調用的函數。函數
若是你把函數的指針(地址)做爲參數傳遞給另外一個函數,當這個指針被用來調用其所指向的函數時,咱們就說這是回調函數。」指針
——網上摘來的一段回調函數的解釋,好吧,比較拗口。cmd
咱們來打個比方:回調函數
學校要進行出入管制了,告訴門衛發現寵物和車要上報(這個是回調函數註冊),而後管理人員根據門衛的上報進行處理(這個是回調函數的執行)。it
import os,sys
Find={
'Type':'',
'Color':'',
'Size':''
}#定義彙報內容
def CallFun(cmd,Find):#回調函數的定義,在這裏處理各類回調狀況
if cmd=='Type':
if Find['Type']=='Dog' or Find['Type']=='Cat':
print 'A Pet:'
else:
print 'A Transport:'
elif cmd=='Print':
print Find
else:
print 'error'
def GiveInfo(i):#該段是填報信息,可忽略
type0=['Dog','Cat']
type1=['Car','Truck']
color0=['Black','White','Pink']
size0=['Big','Middle','Small']
t0=i % 2
if t0== 0:
Find['Type'] = type0[i%2]
else:
Find['Type'] = type1[i%2]
Find['Color'] = color0[i%3]
Find['Size'] = size0[i%3]
def FindObj(num,cmd,CallBackFun):#發現目標,啓動回調函數
GiveInfo(num)#門衛填報信息
CallBackFun(cmd,Find)#啓動回調函數
if __name__ == '__main__':
cmds=['Type','Print','Try']
for i in range(0,10):#定義十次上報
print '----------%d-------------'%i
FindObj(i,cmds[i%3],CallFun)#這裏註冊回調函數(就是告知門衛的過程)
回調利於模塊解耦。import