溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python中@怎么用

發(fā)布時(shí)間:2021-12-13 09:08:39 來源:億速云 閱讀:155 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(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

解析:

  1. @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()的代碼。

  2. 打印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)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(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)容。

AI