您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)python中@怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
可以在模塊或者類的定義層內(nèi)對(duì)函數(shù)進(jìn)行修飾。出現(xiàn)在函數(shù)定義的前一行,不允許和函數(shù)定義在同一行。
一個(gè)修飾符就是一個(gè)函數(shù),它將被修飾的函數(shù)作為參數(shù),并返回修飾后的同名函數(shù)或其他可調(diào)用的東西(如果返回不是一個(gè)可調(diào)用的對(duì)象那么會(huì)報(bào)錯(cuò))。
例1:
def funA(desA): print("It's funA") def funB(desB): print("It's funB") @funA def funC(): print("It's funC")
運(yùn)行結(jié)果:
It's funA
例2:
可以看出,該例子中@test等價(jià)于 test(xxx()),但是這種寫法你得考慮python代碼的執(zhí)行順序。
def test(func): print("a") return func() @test def xxx(): print('Hello world!')
運(yùn)行結(jié)果:
a
Hello world!
例3:
為更深刻理解該用法,來個(gè)復(fù)雜點(diǎn)的嵌套型。
def funA(desA): print("It's funA") print('---') print(desA) desA() print('---') def funB(desB): print("It's funB") @funB @funA def funC(): print("It's funC")
運(yùn)行結(jié)果:
It's funA
---
<function funC at 0x00000252D2545550>
It's funC
---
It's funB
解析:
@funB 修飾裝飾器@funA,@funA 修飾函數(shù)定義def funC(),將funC()作為funA()的參數(shù),再將funA(funC())作為funB()的參數(shù)。 執(zhí)行的時(shí)候由上而下,先執(zhí)行funA(funC()),再執(zhí)行funB(funA(funC()))。注意,funC()并不執(zhí)行,除非funA()函數(shù)中給出了執(zhí)行funA()的代碼。
打印desA,其傳的是funC()的地址,即desA現(xiàn)在為函數(shù)desA()。 執(zhí)行desA()即執(zhí)行funC(),desA=desA()=funC()。
不常用。
例:
import torch n=100 x = torch.ones(n,2) x[:,0].uniform_(-1.,1) # 第一列變換至(-1.,1) 之間 print(x[:5]) # 輸出前5行 a = torch.tensor([3.,2.]) # 一維Tensor print(a) print(a.shape) y = x@a print(y) print(y.shape)
輸出結(jié)果:
tensor([[ 0.8230, 1.0000],
[ 0.2427, 1.0000],
[-0.7416, 1.0000],
[-0.1267, 1.0000],
[ 0.7767, 1.0000]])
tensor([3., 2.])
torch.Size([2])
tensor([ 4.4691, 2.7281, -0.2249, 1.6198, 4.3302, 3.3386, 1.9908, -0.8602,
4.9401, 1.9773, 4.5304, -0.1322, 3.9059, -0.6714, 1.8961, 3.7886,
0.8241, 4.4958, 2.2765, 2.0459, 3.6542, 3.0824, 2.8941, 1.0526,
4.8735, 1.4954, 3.0208, 4.0778, 2.3491, 2.2261, 3.1072, 1.0640,
1.7861, -0.8534, 3.2532, 1.5553, 0.2124, 3.6449, 1.6078, -0.1138,
4.2842, 3.7184, 2.2547, 3.4069, 3.6274, 0.4879, 1.4638, 3.9289,
3.3475, 4.1895, 1.5572, 0.8312, 2.9297, -0.9266, 0.4067, 2.5237,
0.6808, 4.9553, 3.3838, 0.5514, 4.8429, 0.0513, 3.4206, 0.3634,
4.7817, 3.0385, 2.3276, -0.0794, 3.4981, 4.3776, -0.8681, -0.4573,
3.6906, 1.2463, 1.4817, 4.0007, 4.7871, 2.5638, 4.2755, 3.1731,
3.4726, 2.1015, -0.8896, 1.4156, 1.2603, 4.0047, 3.3631, 3.5998,
3.2414, -0.1534, 3.6266, 0.3750, 4.4118, -0.0199, 1.6172, 3.2992,
-0.2325, 1.8240, 0.5580, 2.1420])
torch.Size([100])
關(guān)于“python中@怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(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)容。