閱讀目錄
舉例函式
importtime
deftimer(func):
definner():
start =time.time()
func()
print(time.time() -start)
return
inner
@timer
#==> func1 = timer(func1)
deffunc1():
time.sleep(0.1)
print('
in func1')
func1()
inview codefunc1
0.10062646865844727
裝飾器的本質:乙個閉包函式
裝飾器的功能:在不修改原函式及其呼叫方式的情況下對原函式功能進行擴充套件
裝飾乙個帶引數的函式
deftimer(func):
definner(a):
start =time.time()
func(a)
print(time.time() -start)
return
inner
@timer
deffunc1(a):
(a)func1(1)
1view code0.0
兩個函式,需要傳遞的引數不一樣
importtime
deftimer(func):
def inner(*args,**kwargs):
start =time.time()
re = func(*args,**kwargs)
print(time.time() -start)
return
re
return
inner
@timer
#==> func1 = timer(func1)
deffunc1(a,b):
print('
in func1')
@timer
#==> func2 = timer(func2)
deffunc2(a):
print('
in func2 and get a:%s
'%(a))
return
'fun2 over
'func1(
'aaaaaa
','bbbbbb')
print(func2('
aaaaaa
'))
ni shi sbview code0.10007596015930176
infunc1
0.0in func2 and
get a:aaaaaa
0.0fun2 over
裝飾器的固定格式:
def帶引數的裝飾器timer(func):
def inner(*args,**kwargs):
'''執行函式之前要做的
'''re = func(*args,**kwargs)
'''執行函式之後要做的
'''return
re
return inner
1 defouter(flag):
3 deftimer(func):
5 def inner(*args,**kwargs):
8 ifflag:
print('''
執行函式之前要做的
''')
9 re = func(*args,**kwargs)
11 ifflag:
print('''
執行函式之後要做的
''')
12 return
re 6
return
inner
4 return
timer
2 @outer(false)
deffunc():
10 print(111)
7 func()
111view code
多個裝飾器裝飾同乙個函式
defdefinner():
print('')
func()
print('')
return
inner
def
definner():
print('')
func()
print('')
return
inner
deff():
print('
in f')
f()
c string函式精講
還有必要再重複一下c 字串和c字串轉換的問題,許多人會遇到這樣的問題,自己做的程式要呼叫別人的函式 類什麼的 比如資料庫連線函式connect char char 但別人的函式引數用的是char 形式的,而我們知道,c str data 返回的字元陣列由該字串擁有,所以是一種const char 要...
精講母函式
在數學中,某個序列的母函式 generating function,又稱生成函式 是一種形式冪級數,其每一項的係數可以提供關於這個序列的資訊。使用母函式解決問題的方法稱為母函式方法。母函式可分為很多種,包括普通母函式 指數母函式 l級數 貝爾級數和狄利克雷級數。對每個序列都可以寫出以上每個型別的乙個...
精講母函式
在數學中,某個序列的母函式 generating function,又稱生成函式 是一種形式冪級數,其每一項的係數可以提供關於這個序列的資訊。使用母函式解決問題的方法稱為母函式方法。母函式可分為很多種,包括普通母函式 指數母函式 l級數 貝爾級數和狄利克雷級數。對每個序列都可以寫出以上每個型別的乙個...