欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中?@的含義以及基本使用方法

 更新時(shí)間:2021年12月12日 11:27:48   作者:Dust_Evc  
@用做函數(shù)的修飾符,可以在模塊或者類的定義層內(nèi)對(duì)函數(shù)進(jìn)行修飾,下面這篇文章主要給大家介紹了關(guān)于python中?@?的含義以及基本使用的相關(guān)資料,需要的朋友可以參考下

一、表示修飾符。

可以在模塊或者類的定義層內(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()),但是這種寫(xiě)法你得考慮python代碼的執(zhí)行順序。

def test(func):
    print("a")
    return func()
    
@test
def xxx():
    print('Hello world!')

運(yùn)行結(jié)果:

a

Hello world!

例3:

為更深刻理解該用法,來(lái)個(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])

總結(jié)

到此這篇關(guān)于python中@的含義以及基本使用方法的文章就介紹到這了,更多相關(guān)python中@用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論