在計(jì)算機(jī)程序設(shè)計(jì)中,回調(diào)函數(shù),或簡(jiǎn)稱回調(diào)(Callback),是指通過函數(shù)參數(shù)傳遞到其它代碼的,某一塊可執(zhí)行代碼的引用。這一設(shè)計(jì)允許了底層代碼調(diào)用在高層定義的子程序:
鄆城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
例如:
def?my_callback(input):
print?"function?my_callback?was?called?with?%s?input"?%?(input,)
def?caller(input,?func):
func(input)
for?i?in?range(5):
caller(i,?my_callback)
執(zhí)行結(jié)果是:
function?my_callback?was?called?with?0?input
function?my_callback?was?called?with?1?input
function?my_callback?was?called?with?2?input
function?my_callback?was?called?with?3?input
function?my_callback?was?called?with?4?input
python回調(diào)函數(shù)的使用方法
在計(jì)算機(jī)程序設(shè)計(jì)中,回調(diào)函數(shù),或簡(jiǎn)稱回調(diào)(Callback),是指通過函數(shù)參數(shù)傳遞到其它代碼的,某一塊可執(zhí)行代碼的引用。這一設(shè)計(jì)允許了底層代碼調(diào)用在高層定義的子程序
有兩種類型的回調(diào)函數(shù):
那么,在python中如何實(shí)現(xiàn)回調(diào)函數(shù)呢,看代碼:
代碼如下:
def my_callback(input):
print "function my_callback was called with %s input" % (input,)
def caller(input, func):
func(input)
for i in range(5):
caller(i, my_callback)
1. 我忘了ctypes的操作方法是:
下面是從復(fù)制
因此,我們的回調(diào)函數(shù)接收整型指針,并且必須返回一個(gè)整數(shù)。首先,我們創(chuàng)建了回調(diào)函數(shù)的類型:
CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))
對(duì)于優(yōu)先個(gè)回調(diào)函數(shù)中,我們簡(jiǎn)單地打印出我們得到,并返回0(;-):
def py_cmp_func(a, b):
print "py_cmp_func", a, b
return 0
創(chuàng)建C可調(diào)用的回調(diào)函數(shù):
cmp_func = CMPFUNC(py_cmp_func)
之前一直知道裝飾器可以增強(qiáng)一個(gè)已經(jīng)存在的方法,Python也提供了annotation的方法,很好用. 但是再看flask login的擴(kuò)展包的時(shí)候. 發(fā)現(xiàn)裝飾器還可以實(shí)現(xiàn)回調(diào)函數(shù)的注冊(cè)功能.
flask login就是通過下面的裝飾器,來注冊(cè)回調(diào)函數(shù),當(dāng)沒有sessionID時(shí),通過裝飾器指定的函數(shù)來讀取用戶到session中.
@login_manager.user_loader
下面寫了一個(gè)簡(jiǎn)單的測(cè)試?yán)觼硌菔具@個(gè)功能.
import time
import functools
class Test():
#/**feature將調(diào)用callback(), 但是在Test中并沒有真正的定義callback**/
def feature(self):
self.callback()
def decorate(self, func):
self.callback=func
return func
test = Test()
#/**將foo注冊(cè)為回調(diào)函數(shù)*//
@test.decorate
def foo():
print 'in foo()'
#/**調(diào)用feature將觸發(fā)回調(diào)函數(shù)**/
test.feature()
這是用的 compile_pattern.sub() 函數(shù),第一個(gè)參數(shù)是 replacement,這是一個(gè)回調(diào)函數(shù)。
這個(gè)函數(shù)的第一個(gè)參數(shù)就是match object. 具體獲取match的調(diào)用,是sub內(nèi)部實(shí)現(xiàn)的。
見官方文檔 re.sub 和 re.RegexObject.sub.
If repl is a function, it is called for every non-overlapping occurrence of
pattern. The function takes a single match object argument, and returns the
replacement string.
分享名稱:python回調(diào)函數(shù)教學(xué) python回調(diào)函數(shù)的作用
鏈接URL:http://www.chinadenli.net/article8/hpgjop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、電子商務(wù)、App設(shè)計(jì)、定制開發(fā)、響應(yīng)式網(wǎng)站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)