您好,登錄后才能下訂單哦!
請(qǐng)看下 無(wú)參數(shù)的裝飾器
如下:
def test(func):
print("test")
def test_in():
print("testing")
return "test "+func()+" test"
return test_in
def test01(func):
print("test01")
def test_in():
print("testing_01")
return "test01 "+func()+" test01"
return test_in
@test
@test01
def f1():
print("---f1----")
return "hello_word"
print(f1())
請(qǐng)看有兩個(gè)參數(shù)的
def test(func):
print("test")
def test_in():
print("testing")
return "test "+func()+" test"
return test_in
@test
def f1(a,b):
print("---f1----")
return "hello_word"
print(f1(2,3)) # 傳入兩個(gè)參數(shù)
拋錯(cuò)如下:
File "D:/works/Unittest/test.py", line 14, in
print(f1(2,3))
TypeError: test_in() takes 0 positional arguments but 2 were given
理解下 為什么會(huì)拋錯(cuò)
@ test 意思就是 f1=test(f1) , f1 指向是 test_in 函數(shù)體
在執(zhí)行 f1(2,3) 的時(shí)候 要執(zhí)行 test_in 函數(shù)體, 但是test_in 沒(méi)有地方接受參數(shù), 所以要報(bào)錯(cuò)
下邊我們添加上 繼續(xù)執(zhí)行看看結(jié)果如何:
def test(func):
print("test")
def test_in(a,b):
print("testing")
return "test "+func()+" test"
return test_in
@test
def f1(a,b):
print("---f1----")
return "hello_word"
print(f1(2,3))
報(bào)錯(cuò)如下:
File "D:/works/Unittest/test.py", line 14, in
print(f1(2,3))
File "D:/works/Unittest/test.py", line 5, in test_in
return "test "+func()+" test"
TypeError: f1() missing 2 required positional arguments: 'a' and 'b'
解釋如下:無(wú)錫婦科醫(yī)院排名 http://www.csfk0731.com/
在執(zhí)行test_in 函數(shù)體的時(shí)候, 發(fā)現(xiàn)有個(gè) func(), 它的指向 就是 f1(a,b) , 它是需要兩個(gè)參數(shù)的, 但是找不到,就會(huì)報(bào)錯(cuò)
改下 再執(zhí)行就不會(huì)報(bào)錯(cuò)了
def test(func):
print("test")
def test_in(a,b):
print("testing")
return "test "+func(a,b)+" test"
return test_in
@test
def f1(a,b):
print("---f1----")
return "hello_word"
print(f1(2,3))
3. 可變參數(shù)
修改如下 就可以隨便傳遞參數(shù)。
def test(func):
print("test")
def test_in(*args,**kargs):
print("testing")
return "test "+str(func(*args,**kargs))+" test"
return test_in
@test
def f1(a,b):
print("---f1----")
return a+b
@test
def f2(a,b,c,d):
return(a+b+c+d)
print(f1(5,9))
print(f2(1,3,4,5))
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。